summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Dahlin <johan@src.gnome.org>2004-08-03 18:38:14 +0000
committerJohan Dahlin <johan@src.gnome.org>2004-08-03 18:38:14 +0000
commitbed044f5d6f69b376e45ac388322e9bf7484ae7e (patch)
tree078d36b1281ac60aed5746ea4b9086e26919df6a
parent9409df14dfa596a87cf010cceeb9d96ace559527 (diff)
downloadpygobject-bed044f5d6f69b376e45ac388322e9bf7484ae7e.tar.gz
Urgh. more threading 'fixes'
-rw-r--r--gobject/gobjectmodule.c31
-rw-r--r--gobject/pygobject.h6
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;