]> Pileus Git - ~andy/gtk/commitdiff
Add a function, gdk_threads_init() that must be explicitely called to
authorOwen Taylor <otaylor@redhat.com>
Mon, 22 Oct 2001 12:59:21 +0000 (12:59 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Mon, 22 Oct 2001 12:59:21 +0000 (12:59 +0000)
Mon Oct 22 08:51:02 2001  Owen Taylor  <otaylor@redhat.com>

* gdk/gdk.[ch] (gdk_threads_init) docs/Changes-2.0.txt:
Add a function, gdk_threads_init() that must be explicitely
called to enable the GDK thread mutex.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/Changes-2.0.txt
gdk/gdk.c
gdk/gdk.h

index 78c3c2e92d199cd6c636ba2edcd45aa91e7c5240..3efdfcedaac1e8fe77fd0b935d7b44ad11d4c723 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Oct 22 08:51:02 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdk.[ch] (gdk_threads_init) docs/Changes-2.0.txt: 
+       Add a function, gdk_threads_init() that must be explicitely 
+       called to enable the GDK thread mutex.
+
 2001-10-22  Jakub Steiner <jimmac@ximian.com>
 
        * gtk/stock-icons/stock_stop.png: no body parts
index 78c3c2e92d199cd6c636ba2edcd45aa91e7c5240..3efdfcedaac1e8fe77fd0b935d7b44ad11d4c723 100644 (file)
@@ -1,3 +1,9 @@
+Mon Oct 22 08:51:02 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdk.[ch] (gdk_threads_init) docs/Changes-2.0.txt: 
+       Add a function, gdk_threads_init() that must be explicitely 
+       called to enable the GDK thread mutex.
+
 2001-10-22  Jakub Steiner <jimmac@ximian.com>
 
        * gtk/stock-icons/stock_stop.png: no body parts
index 78c3c2e92d199cd6c636ba2edcd45aa91e7c5240..3efdfcedaac1e8fe77fd0b935d7b44ad11d4c723 100644 (file)
@@ -1,3 +1,9 @@
+Mon Oct 22 08:51:02 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdk.[ch] (gdk_threads_init) docs/Changes-2.0.txt: 
+       Add a function, gdk_threads_init() that must be explicitely 
+       called to enable the GDK thread mutex.
+
 2001-10-22  Jakub Steiner <jimmac@ximian.com>
 
        * gtk/stock-icons/stock_stop.png: no body parts
index 78c3c2e92d199cd6c636ba2edcd45aa91e7c5240..3efdfcedaac1e8fe77fd0b935d7b44ad11d4c723 100644 (file)
@@ -1,3 +1,9 @@
+Mon Oct 22 08:51:02 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdk.[ch] (gdk_threads_init) docs/Changes-2.0.txt: 
+       Add a function, gdk_threads_init() that must be explicitely 
+       called to enable the GDK thread mutex.
+
 2001-10-22  Jakub Steiner <jimmac@ximian.com>
 
        * gtk/stock-icons/stock_stop.png: no body parts
index 78c3c2e92d199cd6c636ba2edcd45aa91e7c5240..3efdfcedaac1e8fe77fd0b935d7b44ad11d4c723 100644 (file)
@@ -1,3 +1,9 @@
+Mon Oct 22 08:51:02 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdk.[ch] (gdk_threads_init) docs/Changes-2.0.txt: 
+       Add a function, gdk_threads_init() that must be explicitely 
+       called to enable the GDK thread mutex.
+
 2001-10-22  Jakub Steiner <jimmac@ximian.com>
 
        * gtk/stock-icons/stock_stop.png: no body parts
index 78c3c2e92d199cd6c636ba2edcd45aa91e7c5240..3efdfcedaac1e8fe77fd0b935d7b44ad11d4c723 100644 (file)
@@ -1,3 +1,9 @@
+Mon Oct 22 08:51:02 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdk.[ch] (gdk_threads_init) docs/Changes-2.0.txt: 
+       Add a function, gdk_threads_init() that must be explicitely 
+       called to enable the GDK thread mutex.
+
 2001-10-22  Jakub Steiner <jimmac@ximian.com>
 
        * gtk/stock-icons/stock_stop.png: no body parts
index 78c3c2e92d199cd6c636ba2edcd45aa91e7c5240..3efdfcedaac1e8fe77fd0b935d7b44ad11d4c723 100644 (file)
@@ -1,3 +1,9 @@
+Mon Oct 22 08:51:02 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdk.[ch] (gdk_threads_init) docs/Changes-2.0.txt: 
+       Add a function, gdk_threads_init() that must be explicitely 
+       called to enable the GDK thread mutex.
+
 2001-10-22  Jakub Steiner <jimmac@ximian.com>
 
        * gtk/stock-icons/stock_stop.png: no body parts
index adf01fb2999965a493f3c0c58d7b5d9995c75a31..01e0c5c75d658ae0791598dd73f325d692d868ae 100644 (file)
@@ -494,3 +494,14 @@ Incompatible Changes from GTK+-1.2 to GTK+-2.0:
 * The default selected day for GtkCalendar is now the current day in the
   month, not the first day in the month. The current month and year
   were already used.
+
+* GDK is no longer put into threaded mode automatically when 
+  g_thread_init() has been called. In order to use the 
+  global GDK thread mutex with gdk_threads_enter() and 
+  gdk_threads_leave(), you must call gdk_threads_init() explicitely.
+  gdk_threads_init() calls g_thread_init() if it hasn't already
+  been called, so you can typically change your call to g_thread_init()
+  into a call to gdk_threads_init().
+
+  If you aren't using GDK and GTK+ functions from multiple threads,
+  there is no reason to call gdk_threads_init().
index bae902dbcc2c2cf8f5e8b878d1ee1a872d328690..22d13bde866aaa5f5cd950468320dee728c687fd 100644 (file)
--- a/gdk/gdk.c
+++ b/gdk/gdk.c
@@ -279,9 +279,6 @@ gdk_init_check (int    *argc,
   if (gdk_initialized)
     return TRUE;
 
-  if (g_thread_supported ())
-    gdk_threads_mutex = g_mutex_new ();
-  
   if (argc && argv)
     {
       argc_orig = *argc;
@@ -514,6 +511,26 @@ gdk_threads_leave ()
   GDK_THREADS_LEAVE ();
 }
 
+/**
+ * gdk_threads_init:
+ * 
+ * Initializes GDK so that it can be used from multiple threads
+ * in conjunction with gdk_threads_enter() and gdk_threads_leave().
+ * If g_thread_init() has not yet been called, calls
+ * g_thread_init(NULL).
+ *
+ * This call must be made before any use of the main loop from
+ * GTK+; to be safe, call it before gtk_init().
+ **/
+void
+gdk_threads_init ()
+{
+  if (!g_thread_supported ())
+    g_thread_init (NULL);
+
+  gdk_threads_mutex = g_mutex_new ();
+}
+
 G_CONST_RETURN char *
 gdk_get_program_class (void)
 {
index 5546278349b5daf1accfef572bc377b1afebff35..308130fb07e87a768be8e1a6a0bb891523f82fdf 100644 (file)
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -151,6 +151,7 @@ GDKVAR GMutex *gdk_threads_mutex;
 
 void     gdk_threads_enter                (void);
 void     gdk_threads_leave                (void);
+void     gdk_threads_init                 (void);  
 
 #ifdef G_THREADS_ENABLED
 #  define GDK_THREADS_ENTER()  G_STMT_START {  \