SVN commit 1083274 by berger: move ref/deref to functions M +11 -5 kis_shared.h M +11 -5 kis_shared_data.h M +3 -3 kis_shared_ptr.h --- trunk/koffice/krita/image/kis_shared.h #1083273:1083274 @@ -27,17 +27,23 @@ class KRITAIMAGE_EXPORT KisShared { -#if QT_VERSION < 0x040400 -private: - typedef QAtomic QAtomicInt; -#endif friend class KisSharedData; protected: KisShared(); ~KisShared(); public: - QAtomicInt ref; KisSharedPtr< KisSharedData > dataPtr; + int refCount() { + return _ref; + } + bool ref() { + return _ref.ref(); + } + bool deref() { + return _ref.deref(); + } +private: + QAtomicInt _ref; }; #endif --- trunk/koffice/krita/image/kis_shared_data.h #1083273:1083274 @@ -26,14 +26,20 @@ */ class KisSharedData { -#if QT_VERSION < 0x040400 -private: - typedef QAtomic QAtomicInt; -#endif public: KisSharedData() : valid(true) { } - QAtomicInt ref; bool valid; + int refCount() { + return _ref; + } + bool ref() { + return _ref.ref(); + } + bool deref() { + return _ref.deref(); + } +private: + QAtomicInt _ref; }; --- trunk/koffice/krita/image/kis_shared_ptr.h #1083273:1083274 @@ -207,14 +207,14 @@ #ifndef NDEBUG KisMemoryLeakTracker::instance()->reference(d, this); #endif - return d->ref.ref(); + return d->ref(); } inline bool deref() const { #ifndef NDEBUG KisMemoryLeakTracker::instance()->dereference(d, this); #endif - return d->ref.deref(); + return d->deref(); } private: mutable T* d; @@ -376,10 +376,10 @@ Q_INLINE_TEMPLATE void KisSharedPtr::attach(T* p) const { if (d != p) { - if (p) p->ref.ref(); if (d && !deref()) delete d; d = p; + if (d) ref(); } }