[gtk+] gdk: Deprecate thread functions
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gdk: Deprecate thread functions
- Date: Mon, 30 Jul 2012 16:02:07 +0000 (UTC)
commit 0ac56e9dcc526d07975feeb1a297640a8452525b
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Jul 28 17:23:17 2012 +0200
gdk: Deprecate thread functions
This commit deprecates gdk_threads_init, gdk_threads_enter,
gdk_threads_leave and gdk_threads_set_lock_functions. Using GTK+
from multiple threads does not work at all on Windows, and is
problematic on other platforms as well. We want to move to a world
where all GTK+ calls are made from the main thread.
Use g_main_context_invoke, g_idle_add and related functions if you
need to schedule GTK+ calls from other threads.
http://bugzilla.gnome.org/show_bug.cgi?id=680754
gdk/gdk.c | 12 ++++++++++++
gdk/gdkthreads.h | 22 ++++++++++++++++++++++
2 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/gdk/gdk.c b/gdk/gdk.c
index 3c8c711..cf81863 100644
--- a/gdk/gdk.c
+++ b/gdk/gdk.c
@@ -663,6 +663,9 @@ gdk_init (int *argc, char ***argv)
* GDK and GTK+ functions can be called safely and without causing race
* conditions. Only one thread at a time can be in such a critial
* section.
+ *
+ * Deprecated:3.6: All GDK and GTK+ calls should be made from the main
+ * thread
*/
void
gdk_threads_enter (void)
@@ -675,6 +678,9 @@ gdk_threads_enter (void)
* gdk_threads_leave:
*
* Leaves a critical region begun with gdk_threads_enter().
+ *
+ * Deprecated:3.6: All GDK and GTK+ calls should be made from the main
+ * thread
*/
void
gdk_threads_leave (void)
@@ -703,6 +709,9 @@ gdk_threads_impl_unlock (void)
*
* This call must be made before any use of the main loop from
* GTK+; to be safe, call it before gtk_init().
+ *
+ * Deprecated:3.6: All GDK and GTK+ calls should be made from the main
+ * thread
*/
void
gdk_threads_init (void)
@@ -740,6 +749,9 @@ gdk_threads_init (void)
* This method must be called before gdk_threads_init(), and cannot
* be called multiple times.
*
+ * Deprecated:3.6: All GDK and GTK+ calls should be made from the main
+ * thread
+ *
* Since: 2.4
**/
void
diff --git a/gdk/gdkthreads.h b/gdk/gdkthreads.h
index 74e4899..172e1b1 100644
--- a/gdk/gdkthreads.h
+++ b/gdk/gdkthreads.h
@@ -33,9 +33,19 @@
G_BEGIN_DECLS
+#if defined(GDK_COMPILATION) || defined(GTK_COMPILATION)
+#define GDK_THREADS_DEPRECATED
+#else
+#define GDK_THREADS_DEPRECATED GDK_DEPRECATED_IN_3_6
+#endif
+
+GDK_THREADS_DEPRECATED
void gdk_threads_init (void);
+GDK_THREADS_DEPRECATED
void gdk_threads_enter (void);
+GDK_THREADS_DEPRECATED
void gdk_threads_leave (void);
+GDK_THREADS_DEPRECATED
void gdk_threads_set_lock_functions (GCallback enter_fn,
GCallback leave_fn);
@@ -62,6 +72,9 @@ guint gdk_threads_add_timeout_seconds (guint interval,
GSourceFunc function,
gpointer data);
+
+#if !(GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_6)
+
/**
* GDK_THREADS_ENTER:
*
@@ -71,6 +84,9 @@ guint gdk_threads_add_timeout_seconds (guint interval,
* section. The macro expands to a no-op if #G_THREADS_ENABLED has not
* been defined. Typically gdk_threads_enter() should be used instead of
* this macro.
+ *
+ * Deprecated:3.6: Use g_main_context_invoke(), g_idle_add() and related
+ * functions if you need to schedule GTK+ calls from other threads.
*/
#define GDK_THREADS_ENTER() gdk_threads_enter()
@@ -79,9 +95,15 @@ guint gdk_threads_add_timeout_seconds (guint interval,
*
* This macro marks the end of a critical section
* begun with #GDK_THREADS_ENTER.
+ *
+ * Deprecated:3.6: Deprecated in 3.6.
*/
#define GDK_THREADS_LEAVE() gdk_threads_leave()
+#endif
+
+#undef GDK_THREADS_DEPRECATED
+
G_END_DECLS
#endif /* __GDK_THREADS_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]