From 8f11af8d3e857ab0d6313a620a25d8eab1eafea5 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 19 Feb 2010 15:41:42 +0000 Subject: [PATCH] Replaced local mutex with getObserverMutex(). --- include/osg/observer_ptr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/osg/observer_ptr b/include/osg/observer_ptr index a6d03c10d..c8300fbe5 100644 --- a/include/osg/observer_ptr +++ b/include/osg/observer_ptr @@ -51,7 +51,7 @@ class observer_ptr : public Observer { if (&rp==this) return *this; - OpenThreads::ScopedLock lock(_mutex); + OpenThreads::ScopedLock lock(*getObserverMutex()); if (_ptr==rp._ptr) return *this; if (_ptr) _ptr->removeObserver(this); @@ -63,7 +63,8 @@ class observer_ptr : public Observer inline observer_ptr& operator = (T* ptr) { - OpenThreads::ScopedLock lock(_mutex); + OpenThreads::ScopedLock lock(*getObserverMutex()); + if (_ptr==ptr) return *this; if (_ptr) _ptr->removeObserver(this); @@ -76,7 +77,7 @@ class observer_ptr : public Observer // robust thread safe access to pointer ref_ptr lock() const { - OpenThreads::ScopedLock lock(_mutex); + OpenThreads::ScopedLock lock(*getObserverMutex()); return ref_ptr(_ptr); } @@ -111,11 +112,10 @@ class observer_ptr : public Observer { T* ref_obj = static_cast(obj); - OpenThreads::ScopedLock lock(_mutex); + OpenThreads::ScopedLock lock(*getObserverMutex()); if (ref_obj->referenceCount() == 0) _ptr = 0; } - mutable OpenThreads::Mutex _mutex; T* _ptr; };