diff options
Diffstat (limited to 'cpp/src/Ice/GC.cpp')
-rw-r--r-- | cpp/src/Ice/GC.cpp | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/cpp/src/Ice/GC.cpp b/cpp/src/Ice/GC.cpp index 90249d1aad1..a116cddeff8 100644 --- a/cpp/src/Ice/GC.cpp +++ b/cpp/src/Ice/GC.cpp @@ -189,15 +189,15 @@ IceInternal::GC::run() { collect = true; } - observer = _observer; + observer = _observer.get(); } if(collect) { if(observer) { - observer->stateChanged(ThreadStateIdle, ThreadStateInUseForMisc); + observer->stateChanged(ThreadStateIdle, ThreadStateInUseForOther); collectGarbage(); - observer->stateChanged(ThreadStateInUseForMisc, ThreadStateIdle); + observer->stateChanged(ThreadStateInUseForOther, ThreadStateIdle); } else { @@ -206,10 +206,7 @@ IceInternal::GC::run() } } - if(_observer) - { - _observer->detach(); - } + _observer.detach(); } void @@ -397,9 +394,5 @@ IceInternal::GC::updateObserver(const ObserverResolverPtr& resolver) { Monitor<Mutex>::Lock sync(*this); assert(resolver); - _observer = resolver->getThreadObserver("Communicator", name(), ThreadStateIdle, _observer); - if(_observer) - { - _observer->attach(); - } + _observer.attach(resolver->getThreadObserver("Communicator", name(), ThreadStateIdle, _observer.get())); } |