File indexing completed on 2024-05-12 15:58:25

0001 /*
0002  *  SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "kis_legacy_undo_adapter.h"
0008 
0009 #include "kis_image.h"
0010 
0011 
0012 KisLegacyUndoAdapter::KisLegacyUndoAdapter(KisUndoStore *undoStore,
0013                                            KisImageWSP image)
0014     : KisUndoAdapter(undoStore, image.data()),
0015       m_image(image),
0016       m_macroCounter(0)
0017 {
0018 }
0019 
0020 const KUndo2Command* KisLegacyUndoAdapter::presentCommand()
0021 {
0022     return undoStore()->presentCommand();
0023 }
0024 
0025 void KisLegacyUndoAdapter::undoLastCommand()
0026 {
0027     undoStore()->undoLastCommand();
0028 }
0029 
0030 void KisLegacyUndoAdapter::addCommand(KUndo2Command *command)
0031 {
0032     if(!command) return;
0033 
0034     if(m_macroCounter) {
0035         undoStore()->addCommand(command);
0036     }
0037     else {
0038         m_image->barrierLock();
0039         undoStore()->addCommand(command);
0040         m_image->unlock();
0041     }
0042 }
0043 
0044 void KisLegacyUndoAdapter::beginMacro(const KUndo2MagicString& macroName)
0045 {
0046     if(!m_macroCounter) {
0047         m_image->barrierLock();
0048     }
0049 
0050     m_macroCounter++;
0051     undoStore()->beginMacro(macroName);
0052 }
0053 
0054 void KisLegacyUndoAdapter::endMacro()
0055 {
0056     m_macroCounter--;
0057 
0058     if(!m_macroCounter) {
0059         m_image->unlock();
0060     }
0061     undoStore()->endMacro();
0062 }
0063