summaryrefslogtreecommitdiffstats
path: root/gobject/pygobject-private.h
diff options
context:
space:
mode:
authorGustavo J. A. M. Carneiro <gjc@src.gnome.org>2005-01-09 17:35:01 +0000
committerGustavo J. A. M. Carneiro <gjc@src.gnome.org>2005-01-09 17:35:01 +0000
commitcdbddaa4d040be8b71d0e3b4790da4aaf6b87ab6 (patch)
tree1d604c60dd3df41d5807b5d29fb92949696d3e03 /gobject/pygobject-private.h
parentd953b545f6fa8f0e24b265044bc52ab5896702eb (diff)
downloadpygobject-cdbddaa4d040be8b71d0e3b4790da4aaf6b87ab6.tar.gz
pygobject-cdbddaa4d040be8b71d0e3b4790da4aaf6b87ab6.tar.xz
pygobject-cdbddaa4d040be8b71d0e3b4790da4aaf6b87ab6.zip
misc API additions, threading
Diffstat (limited to 'gobject/pygobject-private.h')
-rw-r--r--gobject/pygobject-private.h24
1 files changed, 10 insertions, 14 deletions
diff --git a/gobject/pygobject-private.h b/gobject/pygobject-private.h
index d826f92..a9d8bd9 100644
--- a/gobject/pygobject-private.h
+++ b/gobject/pygobject-private.h
@@ -19,24 +19,20 @@ extern struct _PyGObject_Functions pygobject_api_functions;
(* pygobject_api_functions.unblock_threads)(); \
} G_STMT_END
-#define pyg_threads_enabled (pygobject_api_functions.threads_enabled)
-
+#if PY_VERSION_HEX < 0x020400F0
+# define pyg_threads_enabled (pygobject_api_functions.threads_enabled)
+#else
+# define pyg_threads_enabled (PyEval_ThreadsInitialized())
+#endif
-#define pyg_gil_state_ensure() (pygobject_api_functions.threads_enabled? (pygobject_api_functions.gil_state_ensure()) : 0)
-#define pyg_gil_state_release(state) G_STMT_START { \
- if (pygobject_api_functions.threads_enabled) \
+#define pyg_gil_state_ensure() (pyg_threads_enabled? (pygobject_api_functions.gil_state_ensure()) : 0)
+#define pyg_gil_state_release(state) G_STMT_START { \
+ if (pyg_threads_enabled) \
pygobject_api_functions.gil_state_release(state); \
} G_STMT_END
-#define pyg_begin_allow_threads \
- G_STMT_START { \
- PyThreadState *_save = NULL; \
- if (pygobject_api_functions.threads_enabled) \
- _save = PyEval_SaveThread();
-#define pyg_end_allow_threads \
- if (pygobject_api_functions.threads_enabled) \
- PyEval_RestoreThread(_save); \
- } G_STMT_END
+#define pyg_begin_allow_threads Py_BEGIN_ALLOW_THREADS
+#define pyg_end_allow_threads Py_END_ALLOW_THREADS
extern GType PY_TYPE_OBJECT;