X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=python%2Fguestfs-py-byhand.c;h=29be83b7a5f5f35b9834caf467aef98ea73423cb;hb=14bb3b5ae75f41af05ca6d26ebbb5e85aacf2e20;hp=af9686fc316aa05118eb242a034e087d1efe9616;hpb=2cac52000a6a96a583af72e289a4296c596047d5;p=libguestfs.git diff --git a/python/guestfs-py-byhand.c b/python/guestfs-py-byhand.c index af9686f..29be83b 100644 --- a/python/guestfs-py-byhand.c +++ b/python/guestfs-py-byhand.c @@ -91,6 +91,7 @@ py_guestfs_event_callback_wrapper (guestfs_h *g, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len) { + PyGILState_STATE py_save = PyGILState_UNLOCKED; PyObject *py_callback = callback; PyObject *py_array; PyObject *args; @@ -109,7 +110,14 @@ py_guestfs_event_callback_wrapper (guestfs_h *g, (unsigned PY_LONG_LONG) event, event_handle, buf, buf_len, py_array); + if (PyEval_ThreadsInitialized ()) + py_save = PyGILState_Ensure (); + py_r = PyEval_CallObject (py_callback, args); + + if (PyEval_ThreadsInitialized ()) + PyGILState_Release (py_save); + Py_DECREF (args); if (py_r != NULL)