From f7048ba1e14d64287e402d6064c8a63d00bb9ee1 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 6 Jul 2004 04:33:40 +0000 Subject: [PATCH] Only call GDK_THREADS_ENTER() / _LEAVE() when called from an idle handler. Tue Jul 6 00:29:03 2004 Matthias Clasen * gtk/gtkuimanager.c (do_updates): (do_updates_idle): Only call GDK_THREADS_ENTER() / _LEAVE() when called from an idle handler. (#145429, Jan-Marek Glogowski) --- ChangeLog | 6 ++++++ ChangeLog.pre-2-10 | 6 ++++++ ChangeLog.pre-2-6 | 6 ++++++ ChangeLog.pre-2-8 | 6 ++++++ gtk/gtkuimanager.c | 15 +++++++++++---- 5 files changed, 35 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e0b9a9edc..1b0adc35b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Tue Jul 6 00:29:03 2004 Matthias Clasen + + * gtk/gtkuimanager.c (do_updates): + (do_updates_idle): Only call GDK_THREADS_ENTER() / _LEAVE() + when called from an idle handler. (#145429, Jan-Marek Glogowski) + Mon Jul 5 23:47:38 2004 Matthias Clasen * gtk/gtkfilechooserutils.c (delegate_notify): Use diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 2e0b9a9edc..1b0adc35b0 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Tue Jul 6 00:29:03 2004 Matthias Clasen + + * gtk/gtkuimanager.c (do_updates): + (do_updates_idle): Only call GDK_THREADS_ENTER() / _LEAVE() + when called from an idle handler. (#145429, Jan-Marek Glogowski) + Mon Jul 5 23:47:38 2004 Matthias Clasen * gtk/gtkfilechooserutils.c (delegate_notify): Use diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 2e0b9a9edc..1b0adc35b0 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Tue Jul 6 00:29:03 2004 Matthias Clasen + + * gtk/gtkuimanager.c (do_updates): + (do_updates_idle): Only call GDK_THREADS_ENTER() / _LEAVE() + when called from an idle handler. (#145429, Jan-Marek Glogowski) + Mon Jul 5 23:47:38 2004 Matthias Clasen * gtk/gtkfilechooserutils.c (delegate_notify): Use diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 2e0b9a9edc..1b0adc35b0 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Tue Jul 6 00:29:03 2004 Matthias Clasen + + * gtk/gtkuimanager.c (do_updates): + (do_updates_idle): Only call GDK_THREADS_ENTER() / _LEAVE() + when called from an idle handler. (#145429, Jan-Marek Glogowski) + Mon Jul 5 23:47:38 2004 Matthias Clasen * gtk/gtkfilechooserutils.c (delegate_notify): Use diff --git a/gtk/gtkuimanager.c b/gtk/gtkuimanager.c index 7248628f08..220a2c2bd7 100644 --- a/gtk/gtkuimanager.c +++ b/gtk/gtkuimanager.c @@ -2495,10 +2495,18 @@ update_node (GtkUIManager *self, } static gboolean -do_updates (GtkUIManager *self) +do_updates_idle (GtkUIManager *self) { GDK_THREADS_ENTER (); + do_updates (self); + GDK_THREADS_LEAVE (); + return FALSE; +} + +static gboolean +do_updates (GtkUIManager *self) +{ /* this function needs to check through the tree for dirty nodes. * For such nodes, it needs to do the following: * @@ -2515,8 +2523,6 @@ do_updates (GtkUIManager *self) self->private_data->update_tag = 0; - GDK_THREADS_LEAVE (); - return FALSE; } @@ -2526,7 +2532,8 @@ queue_update (GtkUIManager *self) if (self->private_data->update_tag != 0) return; - self->private_data->update_tag = g_idle_add ((GSourceFunc)do_updates, self); + self->private_data->update_tag = g_idle_add ((GSourceFunc)do_updates_idle, + self); }