chiark / gitweb /
Acquire and release the GIL around select callbacks.
[mLib-python] / sig.pyx
diff --git a/sig.pyx b/sig.pyx
index 17237f349a990f920328bc0d9b217143c141af08..937f29bd0d16f51129f8409d635e8812ebd3e788 100644 (file)
--- a/sig.pyx
+++ b/sig.pyx
@@ -76,10 +76,14 @@ cdef class SelSignal:
   def signalled(me):
     return _maybecall(me._signalled, ())
 
-cdef void _sigfunc(int sig, void *arg):
+cdef void _sigfunc2(void *arg):
   cdef SelSignal s
   s = <SelSignal>arg
   s.signalled()
+cdef void _sigfunc(int sig, void *arg):
+  PyEval_AcquireLock()
+  _sigfunc2(arg)
+  PyEval_ReleaseLock()
 
 sig_init(&_sel)