[gtk+/gtk-3-4] GActionMuxer: disconnect group signals on finalize
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-4] GActionMuxer: disconnect group signals on finalize
- Date: Sun, 15 Jul 2012 17:00:55 +0000 (UTC)
commit 75aefaf32c5df7f0574058e42442512f7a20c256
Author: Ryan Lortie <desrt desrt ca>
Date: Thu Jun 28 23:55:33 2012 -0400
GActionMuxer: disconnect group signals on finalize
The signals for the action group were being disconnected when the action
group was explicitly removed from the GActionMuxer but the same was not
being done when it was finalized.
This means that a change in the state of an action group that used to be
associated with a finalized GActionMuxer would result in a crash. This
would happen for stateful application actions after closing a window.
gtk/gactionmuxer.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gactionmuxer.c b/gtk/gactionmuxer.c
index 22990a4..532eec4 100644
--- a/gtk/gactionmuxer.c
+++ b/gtk/gactionmuxer.c
@@ -352,6 +352,11 @@ static void
g_action_muxer_free_group (gpointer data)
{
Group *group = data;
+ gint i;
+
+ /* 'for loop' or 'four loop'? */
+ for (i = 0; i < 4; i++)
+ g_signal_handler_disconnect (group->group, group->handler_ids[i]);
g_object_unref (group->group);
g_free (group->prefix);
@@ -485,10 +490,6 @@ g_action_muxer_remove (GActionMuxer *muxer,
g_action_muxer_action_removed (group->group, actions[i], group);
g_strfreev (actions);
- /* 'for loop' or 'four loop'? */
- for (i = 0; i < 4; i++)
- g_signal_handler_disconnect (group->group, group->handler_ids[i]);
-
g_action_muxer_free_group (group);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]