[farsight2/master] Release the python GIL when calling into Farsight code

Olivier Crête olivier.crete at collabora.co.uk
Tue Dec 23 15:21:44 PST 2008


---
 python/pyfarsight.override |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/python/pyfarsight.override b/python/pyfarsight.override
index 8d255c0..eff36f4 100644
--- a/python/pyfarsight.override
+++ b/python/pyfarsight.override
@@ -161,13 +161,17 @@ _wrap_fs_session_new_stream(PyGObject *self, PyObject *args, PyObject *kwargs)
 
     parameters = g_new0 (GParameter, n_parameters);
 
+    Py_BEGIN_ALLOW_THREADS
     transmitter = fs_transmitter_new (transmitter_name, 2, &error);
+    Py_END_ALLOW_THREADS
     if (!transmitter)
       goto error;
 
+    Py_BEGIN_ALLOW_THREADS
     st_class = g_type_class_ref (
         fs_transmitter_get_stream_transmitter_type (
             transmitter, &error));
+    Py_END_ALLOW_THREADS
     if (!st_class)
       goto error;
 
@@ -213,11 +217,13 @@ _wrap_fs_session_new_stream(PyGObject *self, PyObject *args, PyObject *kwargs)
     }
   }
 
+  Py_BEGIN_ALLOW_THREADS
   stream = fs_session_new_stream (FS_SESSION (pygobject_get (self)),
       FS_PARTICIPANT (pygobject_get (participant)),
       direction,
       transmitter_name, n_parameters, parameters,
       &error);
+  Py_END_ALLOW_THREADS
 
   if (!stream)
     goto error;
@@ -610,7 +616,9 @@ _wrap_fs_stream_set_remote_codecs (PyGObject *self, PyObject *arg)
     codecs = g_list_append (codecs, pyg_boxed_get (item, FsCodec));
   }
 
+  Py_BEGIN_ALLOW_THREADS
   ret = fs_stream_set_remote_codecs (FS_STREAM(self->obj), codecs, &error);
+  Py_END_ALLOW_THREADS
 
   g_list_free (codecs);
 
-- 
1.5.6.5




More information about the farsight-commits mailing list