When waiting for the main loop to be freed up, wait on either
authorOwen Taylor <otaylor@redhat.com>
Mon, 7 Apr 2003 17:50:53 +0000 (17:50 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Mon, 7 Apr 2003 17:50:53 +0000 (17:50 +0000)
Mon Apr  7 13:40:28 2003  Owen Taylor  <otaylor@redhat.com>

        * glib/gmain.c (g_main_loop_run): When waiting for
        the main loop to be freed up, wait on either
        !loop->is_running or got_ownership, not both.
        (Caused gtk_dialog_run() not to work in other
        threads, reported by Jean-Yves Lefort)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
glib/gmain.c

index ef65669..df8e978 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Mon Apr  7 13:40:28 2003  Owen Taylor  <otaylor@redhat.com>
+
+       * glib/gmain.c (g_main_loop_run): When waiting for
+       the main loop to be freed up, wait on either
+       !loop->is_running or got_ownership, not both.
+       (Caused gtk_dialog_run() not to work in other
+       threads, reported by Jean-Yves Lefort)
+
 2003-04-07  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gutf8.c (g_utf8_strlen): Warn if p == NULL && max != 0.
index ef65669..df8e978 100644 (file)
@@ -1,3 +1,11 @@
+Mon Apr  7 13:40:28 2003  Owen Taylor  <otaylor@redhat.com>
+
+       * glib/gmain.c (g_main_loop_run): When waiting for
+       the main loop to be freed up, wait on either
+       !loop->is_running or got_ownership, not both.
+       (Caused gtk_dialog_run() not to work in other
+       threads, reported by Jean-Yves Lefort)
+
 2003-04-07  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gutf8.c (g_utf8_strlen): Warn if p == NULL && max != 0.
index ef65669..df8e978 100644 (file)
@@ -1,3 +1,11 @@
+Mon Apr  7 13:40:28 2003  Owen Taylor  <otaylor@redhat.com>
+
+       * glib/gmain.c (g_main_loop_run): When waiting for
+       the main loop to be freed up, wait on either
+       !loop->is_running or got_ownership, not both.
+       (Caused gtk_dialog_run() not to work in other
+       threads, reported by Jean-Yves Lefort)
+
 2003-04-07  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gutf8.c (g_utf8_strlen): Warn if p == NULL && max != 0.
index ef65669..df8e978 100644 (file)
@@ -1,3 +1,11 @@
+Mon Apr  7 13:40:28 2003  Owen Taylor  <otaylor@redhat.com>
+
+       * glib/gmain.c (g_main_loop_run): When waiting for
+       the main loop to be freed up, wait on either
+       !loop->is_running or got_ownership, not both.
+       (Caused gtk_dialog_run() not to work in other
+       threads, reported by Jean-Yves Lefort)
+
 2003-04-07  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gutf8.c (g_utf8_strlen): Warn if p == NULL && max != 0.
index ef65669..df8e978 100644 (file)
@@ -1,3 +1,11 @@
+Mon Apr  7 13:40:28 2003  Owen Taylor  <otaylor@redhat.com>
+
+       * glib/gmain.c (g_main_loop_run): When waiting for
+       the main loop to be freed up, wait on either
+       !loop->is_running or got_ownership, not both.
+       (Caused gtk_dialog_run() not to work in other
+       threads, reported by Jean-Yves Lefort)
+
 2003-04-07  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gutf8.c (g_utf8_strlen): Warn if p == NULL && max != 0.
index ef65669..df8e978 100644 (file)
@@ -1,3 +1,11 @@
+Mon Apr  7 13:40:28 2003  Owen Taylor  <otaylor@redhat.com>
+
+       * glib/gmain.c (g_main_loop_run): When waiting for
+       the main loop to be freed up, wait on either
+       !loop->is_running or got_ownership, not both.
+       (Caused gtk_dialog_run() not to work in other
+       threads, reported by Jean-Yves Lefort)
+
 2003-04-07  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gutf8.c (g_utf8_strlen): Warn if p == NULL && max != 0.
index 3f7d70e..f8e2c34 100644 (file)
@@ -2466,7 +2466,7 @@ g_main_loop_run (GMainLoop *loop)
       if (!loop->context->cond)
        loop->context->cond = g_cond_new ();
           
-      while (loop->is_running || !got_ownership)
+      while (loop->is_running && !got_ownership)
        got_ownership = g_main_context_wait (loop->context,
                                             loop->context->cond,
                                             g_static_mutex_get_mutex (&loop->context->mutex));