summaryrefslogtreecommitdiff
path: root/py/modules/IcePy/ObjectAdapter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'py/modules/IcePy/ObjectAdapter.cpp')
-rw-r--r--py/modules/IcePy/ObjectAdapter.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/py/modules/IcePy/ObjectAdapter.cpp b/py/modules/IcePy/ObjectAdapter.cpp
index ecb384c624d..be4d95d0abd 100644
--- a/py/modules/IcePy/ObjectAdapter.cpp
+++ b/py/modules/IcePy/ObjectAdapter.cpp
@@ -594,18 +594,21 @@ adapterWaitForDeactivate(ObjectAdapterObject* self, PyObject* args)
self->deactivateThread = new AdapterInvokeThreadPtr(t);
t->start();
}
-
- bool done;
- {
- AllowThreads allowThreads; // Release Python's global interpreter lock during blocking calls.
- done = (*self->deactivateMonitor).timedWait(IceUtil::Time::milliSeconds(timeout));
- }
-
- if(!done)
- {
- Py_INCREF(Py_False);
- return Py_False;
- }
+
+ while(!self->deactivated)
+ {
+ bool done;
+ {
+ AllowThreads allowThreads; // Release Python's global interpreter lock during blocking calls.
+ done = (*self->deactivateMonitor).timedWait(IceUtil::Time::milliSeconds(timeout));
+ }
+
+ if(!done)
+ {
+ Py_INCREF(Py_False);
+ return Py_False;
+ }
+ }
}
assert(self->deactivated);