From bdb9c70e015181fba5f974cf233ceccbe29f1307 Mon Sep 17 00:00:00 2001 From: Dan Kenigsberg Date: Tue, 3 Nov 2009 18:42:16 +0100 Subject: give up python interpreter lock before calling cb suggested by danpb on irc, patch by danken fixed for proper C syntax * python/libvirt-override.c: on event callback release the python interpreter lock and take it again when coming back so that the callback can reinvoke libvirt. --- libvirt-override.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libvirt-override.c b/libvirt-override.c index 5d24fd2..6c6155b 100644 --- a/libvirt-override.c +++ b/libvirt-override.c @@ -2354,8 +2354,11 @@ libvirt_virEventInvokeHandleCallback(PyObject *self ATTRIBUTE_UNUSED, cb = (virEventHandleCallback) PyvirEventHandleCallback_Get(py_f); opaque = (void *) PyvirVoidPtr_Get(py_opaque); - if(cb) + if(cb) { + LIBVIRT_BEGIN_ALLOW_THREADS; cb (watch, fd, event, opaque); + LIBVIRT_END_ALLOW_THREADS; + } return VIR_PY_INT_SUCCESS; } @@ -2378,8 +2381,11 @@ libvirt_virEventInvokeTimeoutCallback(PyObject *self ATTRIBUTE_UNUSED, cb = (virEventTimeoutCallback) PyvirEventTimeoutCallback_Get(py_f); opaque = (void *) PyvirVoidPtr_Get(py_opaque); - if(cb) + if(cb) { + LIBVIRT_BEGIN_ALLOW_THREADS; cb (timer, opaque); + LIBVIRT_END_ALLOW_THREADS; + } return VIR_PY_INT_SUCCESS; } -- cgit