diff options
author | Benoit Foucher <benoit@zeroc.com> | 2007-01-15 13:35:08 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2007-01-15 13:35:08 +0000 |
commit | b6e03acbaca81b45e6e3be64d68e6f6643cb5cb4 (patch) | |
tree | 2b60dc42aa777b084ac5a5f99052cfa3eaf919b6 /py/modules/IcePy/ObjectAdapter.cpp | |
parent | Removed -c committed by mistake (diff) | |
download | ice-b6e03acbaca81b45e6e3be64d68e6f6643cb5cb4.tar.bz2 ice-b6e03acbaca81b45e6e3be64d68e6f6643cb5cb4.tar.xz ice-b6e03acbaca81b45e6e3be64d68e6f6643cb5cb4.zip |
Fixed bug 1656
Diffstat (limited to 'py/modules/IcePy/ObjectAdapter.cpp')
-rw-r--r-- | py/modules/IcePy/ObjectAdapter.cpp | 27 |
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); |