File indexing completed on 2024-05-26 04:27:30
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "KisPaintOpPresetUpdateProxy.h" 0008 0009 #include "kis_signal_compressor.h" 0010 0011 #include <kis_paintop_preset.h> 0012 0013 struct KisPaintOpPresetUpdateProxy::Private 0014 { 0015 Private() 0016 : updatesCompressor(100, KisSignalCompressor::FIRST_ACTIVE), 0017 updatesBlocked(0), 0018 numUpdatesWhileBlocked(0) 0019 { 0020 } 0021 0022 KisSignalCompressor updatesCompressor; 0023 int updatesBlocked; 0024 int numUpdatesWhileBlocked; 0025 }; 0026 0027 KisPaintOpPresetUpdateProxy::KisPaintOpPresetUpdateProxy() 0028 : m_d(new Private) 0029 { 0030 connect(&m_d->updatesCompressor, SIGNAL(timeout()), SLOT(slotDeliverSettingsChanged())); 0031 } 0032 0033 KisPaintOpPresetUpdateProxy::~KisPaintOpPresetUpdateProxy() 0034 { 0035 } 0036 0037 void KisPaintOpPresetUpdateProxy::notifySettingsChanged() 0038 { 0039 if (m_d->updatesBlocked) { 0040 m_d->numUpdatesWhileBlocked++; 0041 } else { 0042 emit sigSettingsChangedUncompressedEarlyWarning(); 0043 emit sigSettingsChangedUncompressed(); 0044 m_d->updatesCompressor.start(); 0045 } 0046 } 0047 0048 void KisPaintOpPresetUpdateProxy::notifyUniformPropertiesChanged() 0049 { 0050 emit sigUniformPropertiesChanged(); 0051 } 0052 0053 void KisPaintOpPresetUpdateProxy::postponeSettingsChanges() 0054 { 0055 m_d->updatesBlocked++; 0056 } 0057 0058 void KisPaintOpPresetUpdateProxy::unpostponeSettingsChanges() 0059 { 0060 m_d->updatesBlocked--; 0061 0062 if (!m_d->updatesBlocked && m_d->numUpdatesWhileBlocked) { 0063 m_d->numUpdatesWhileBlocked = 0; 0064 emit sigSettingsChangedUncompressedEarlyWarning(); 0065 emit sigSettingsChangedUncompressed(); 0066 emit sigSettingsChanged(); 0067 } 0068 } 0069 0070 void KisPaintOpPresetUpdateProxy::slotDeliverSettingsChanged() 0071 { 0072 if (m_d->updatesBlocked) { 0073 m_d->numUpdatesWhileBlocked++; 0074 } else { 0075 emit sigSettingsChanged(); 0076 } 0077 }