diff --git a/ScopedLock.h b/ScopedLock.h index fa3b142c2..9b19d68bb 100644 --- a/ScopedLock.h +++ b/ScopedLock.h @@ -6,46 +6,46 @@ // This is a returnable lock holder. // I don't know why Boost doesn't provide a good way to do this. - class ScopedLock +class ScopedLock +{ +private: + boost::mutex *mMutex; // parent object has greater scope, so guaranteed valid + mutable bool mValid; + + ScopedLock(); // no implementation + +public: + ScopedLock(boost::mutex &mutex) : mMutex(&mutex), mValid(true) { - private: - boost::mutex *mMutex; // parent object has greater scope, so guaranteed valid - mutable bool mValid; + mMutex->lock(); + } - ScopedLock(); // no implementation - - public: - ScopedLock(boost::mutex &mutex) : mMutex(&mutex), mValid(true) + ~ScopedLock() + { + if(mValid) mMutex->unlock(); + } + + ScopedLock(const ScopedLock &sl) + { + mMutex=sl.mMutex; + if(sl.mValid) { - mMutex->lock(); - } - - ~ScopedLock() - { - if(mValid) mMutex->unlock(); - } - - ScopedLock(const ScopedLock &sl) - { - mMutex=sl.mMutex; - if(sl.mValid) - { - mValid=true; - sl.mValid=false; - } - else mValid=false; - } - - ScopedLock &operator=(const ScopedLock &sl) - { // we inherit any lock the other class member had - if(mValid) mMutex->unlock(); - mMutex=sl.mMutex; - if(sl.mValid) - { mValid=true; sl.mValid=false; - } } - }; + else mValid=false; + } + + ScopedLock &operator=(const ScopedLock &sl) + { // we inherit any lock the other class member had + if(mValid) mMutex->unlock(); + mMutex=sl.mMutex; + if(sl.mValid) + { + mValid=true; + sl.mValid=false; + } + } +}; #endif