Changeset 10515 for code/branches/core7/src/libraries/core/singleton
- Timestamp:
- May 31, 2015, 10:26:39 AM (9 years ago)
- Location:
- code/branches/core7/src/libraries/core/singleton
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/core7/src/libraries/core/singleton/ScopeManager.cc
r10514 r10515 64 64 { 65 65 this->listeners_[scope].insert(listener); 66 if (this->isActive(scope)) 67 this->activateListener(listener); 66 68 } 67 69 68 70 void ScopeManager::removeListener(ScopeListener* listener, ScopeID::Value scope) 69 71 { 72 if (this->isActive(scope)) 73 this->deactivateListener(listener); 70 74 this->listeners_[scope].erase(listener); 71 75 } … … 80 84 { 81 85 for (typename std::set<ScopeListener*>::iterator it = this->listeners_[scope].begin(); it != this->listeners_[scope].end(); ++it) 82 if ((*it)->bActivated_) 83 this->deactivateListener(*it); 86 this->deactivateListener(*it); 84 87 } 85 88 … … 92 95 void ScopeManager::deactivateListener(ScopeListener* listener) 93 96 { 94 try 95 { listener->deactivated(); } 96 catch (...) 97 { orxout(internal_warning) << "ScopeListener::deactivated() failed! This MUST NOT happen, fix it!" << endl; } 98 listener->bActivated_ = false; 97 if (listener->bActivated_) 98 { 99 try 100 { listener->deactivated(); } 101 catch (...) 102 { orxout(internal_warning) << "ScopeListener::deactivated() failed! This MUST NOT happen, fix it!" << endl; } 103 listener->bActivated_ = false; 104 } 99 105 } 100 106 } -
code/branches/core7/src/libraries/core/singleton/ScopeManager.h
r10514 r10515 64 64 bool isActive(ScopeID::Value scope); 65 65 66 /** Registers a listener for the given scope. */66 /** Registers a listener for the given scope. If the scope is already active, the listener is activate immediately. */ 67 67 void addListener(ScopeListener* listener, ScopeID::Value scope); 68 /** Unregisters a listener for the given scope. */68 /** Unregisters a listener for the given scope. If the scope is still active, the listener is deactivated before removal. */ 69 69 void removeListener(ScopeListener* listener, ScopeID::Value scope); 70 70
Note: See TracChangeset
for help on using the changeset viewer.