File indexing completed on 2024-05-12 15:58:21
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef __KIS_IMAGE_BARRIER_LOCK_ADAPTER_H 0008 #define __KIS_IMAGE_BARRIER_LOCK_ADAPTER_H 0009 0010 0011 template <typename ImagePointer> 0012 class KisImageBarrierLockAdapterImpl { 0013 public: 0014 inline KisImageBarrierLockAdapterImpl(ImagePointer image, bool readOnly = false) 0015 : m_image(image), 0016 m_readOnly(readOnly) 0017 { 0018 } 0019 0020 inline ~KisImageBarrierLockAdapterImpl() { 0021 } 0022 0023 inline void lock() { 0024 m_image->barrierLock(m_readOnly); 0025 } 0026 0027 // Qt syntax 0028 inline bool tryLock() { 0029 return m_image->tryBarrierLock(m_readOnly); 0030 } 0031 0032 // Boost.Thread syntax 0033 inline bool try_lock() { 0034 return tryLock(); 0035 } 0036 0037 inline void unlock() { 0038 m_image->unlock(); 0039 } 0040 0041 private: 0042 KisImageBarrierLockAdapterImpl(const KisImageBarrierLockAdapterImpl<ImagePointer> &rhs); 0043 ImagePointer m_image; 0044 bool m_readOnly; 0045 }; 0046 0047 typedef KisImageBarrierLockAdapterImpl<KisImageSP> KisImageBarrierLockAdapter; 0048 typedef KisImageBarrierLockAdapterImpl<KisImage*> KisImageBarrierLockAdapterRaw; 0049 0050 #endif /* __KIS_IMAGE_BARRIER_LOCK_ADAPTER_H */