summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/GC.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/GC.cpp')
-rw-r--r--cpp/src/Ice/GC.cpp17
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()));
}