diff options
author | Johan Dahlin <johan@src.gnome.org> | 2004-08-03 18:38:14 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2004-08-03 18:38:14 +0000 |
commit | bed044f5d6f69b376e45ac388322e9bf7484ae7e (patch) | |
tree | 078d36b1281ac60aed5746ea4b9086e26919df6a | |
parent | 9409df14dfa596a87cf010cceeb9d96ace559527 (diff) | |
download | pygobject-bed044f5d6f69b376e45ac388322e9bf7484ae7e.tar.gz |
Urgh. more threading 'fixes'
-rw-r--r-- | gobject/gobjectmodule.c | 31 | ||||
-rw-r--r-- | gobject/pygobject.h | 6 |
2 files changed, 17 insertions, 20 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c index 4fd09cef..c45d89b0 100644 --- a/gobject/gobjectmodule.c +++ b/gobject/gobjectmodule.c @@ -96,7 +96,9 @@ static void pyobject_free(gpointer boxed) { PyObject *object = boxed; - PyGILState_STATE state = PyGILState_Ensure(); + PyGILState_STATE state; + + state = PyGILState_Ensure(); Py_DECREF(object); PyGILState_Release(state); } @@ -1456,23 +1458,6 @@ pyg_main_context_default (PyObject *unused) } -static PyObject * -pyg_thread_init (PyObject *unused) -{ - /* FIXME: Should we raise an exception if we don't - have threading enabled. This will make - the import/initialize code quite ugly */ -#ifdef ENABLE_PYGTK_THREADING - PyEval_InitThreads(); - - if (!g_threads_got_initialized) - g_thread_init(NULL); -#endif - - Py_INCREF(Py_None); - return Py_None; -} - static PyMethodDef pygobject_functions[] = { { "type_name", pyg_type_name, METH_VARARGS }, { "type_from_name", pyg_type_from_name, METH_VARARGS }, @@ -1490,7 +1475,6 @@ static PyMethodDef pygobject_functions[] = { { "io_add_watch", (PyCFunction)pyg_io_add_watch, METH_VARARGS|METH_KEYWORDS }, { "source_remove", pyg_source_remove, METH_VARARGS }, { "main_context_default", (PyCFunction)pyg_main_context_default, METH_NOARGS }, - { "thread_init", (PyCFunction)pyg_thread_init, METH_NOARGS }, { NULL, NULL, 0 } }; @@ -1826,10 +1810,17 @@ initgobject(void) PyGTypeWrapper_Type.ob_type = &PyType_Type; PyGParamSpec_Type.ob_type = &PyType_Type; - + m = Py_InitModule("gobject", pygobject_functions); d = PyModule_GetDict(m); +#ifndef DISABLE_THREADING + PyEval_InitThreads(); + if (!g_threads_got_initialized) + g_thread_init(NULL); +#else + +#endif g_type_init(); PY_TYPE_OBJECT = g_boxed_type_register_static("PyObject", diff --git a/gobject/pygobject.h b/gobject/pygobject.h index c9cebfed..43ea6641 100644 --- a/gobject/pygobject.h +++ b/gobject/pygobject.h @@ -7,6 +7,12 @@ #include <glib.h> #include <glib-object.h> +#ifdef DISABLE_THREADING +# define PyGILState_STATE int +# define PyGILState_Ensure() (0) +# define PyGILState_Release(x) +#endif + typedef struct { PyObject_HEAD GObject *obj; |