X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=python%2Fguestfs-py-byhand.c;h=1756963ae48424d6e1a37846fb92cd6b53c205ad;hp=af9686fc316aa05118eb242a034e087d1efe9616;hb=c55bad93fbde03a3daa6058913f02098c45e55f5;hpb=2cac52000a6a96a583af72e289a4296c596047d5 diff --git a/python/guestfs-py-byhand.c b/python/guestfs-py-byhand.c index af9686f..1756963 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) @@ -160,7 +168,7 @@ py_guestfs_set_event_callback (PyObject *self, PyObject *args) snprintf (key, sizeof key, "_python_event_%d", eh); guestfs_set_private (g, key, py_callback); - py_eh = PyInt_FromLong ((long) eh); + py_eh = PyLong_FromLong ((long) eh); return py_eh; }