lemon/bits/alteration_notifier.h
changeset 1131 43a91b33f374
parent 463 88ed40ad0d4f
child 1270 dceba191c00d
     1.1 --- a/lemon/bits/alteration_notifier.h	Fri Jan 20 19:08:00 2012 +0100
     1.2 +++ b/lemon/bits/alteration_notifier.h	Sun Jan 29 11:28:41 2012 +0100
     1.3 @@ -23,6 +23,7 @@
     1.4  #include <list>
     1.5  
     1.6  #include <lemon/core.h>
     1.7 +#include <lemon/bits/lock.h>
     1.8  
     1.9  //\ingroup graphbits
    1.10  //\file
    1.11 @@ -251,7 +252,7 @@
    1.12  
    1.13      typedef std::list<ObserverBase*> Observers;
    1.14      Observers _observers;
    1.15 -
    1.16 +    lemon::bits::Lock _lock;
    1.17  
    1.18    public:
    1.19  
    1.20 @@ -332,14 +333,18 @@
    1.21    protected:
    1.22  
    1.23      void attach(ObserverBase& observer) {
    1.24 +      _lock.lock();
    1.25        observer._index = _observers.insert(_observers.begin(), &observer);
    1.26        observer._notifier = this;
    1.27 +      _lock.unlock();
    1.28      }
    1.29  
    1.30      void detach(ObserverBase& observer) {
    1.31 +      _lock.lock();
    1.32        _observers.erase(observer._index);
    1.33        observer._index = _observers.end();
    1.34        observer._notifier = 0;
    1.35 +      _lock.unlock();
    1.36      }
    1.37  
    1.38    public: