datetime: Disconnect from GtkStack signals before widget destruction

This fixes a regression from commit 545c886 that caused criticals when
leaving the datetime panel.

https://bugzilla.gnome.org/show_bug.cgi?id=709443
This commit is contained in:
Kalev Lember 2013-10-04 18:14:46 +02:00
parent 2234970583
commit 7ae60ad2cf

View file

@ -90,6 +90,7 @@ struct _CcDateTimePanelPrivate
GtkWidget *am_label;
GtkWidget *pm_label;
GtkWidget *am_pm_stack;
gulong am_pm_visiblity_changed_id;
GnomeWallClock *clock_tracker;
@ -140,6 +141,13 @@ cc_date_time_panel_dispose (GObject *object)
g_clear_object (&priv->cancellable);
}
if (priv->am_pm_visiblity_changed_id != 0)
{
g_signal_handler_disconnect (priv->am_pm_stack,
priv->am_pm_visiblity_changed_id);
priv->am_pm_visiblity_changed_id = 0;
}
g_clear_object (&priv->builder);
g_clear_object (&priv->clock_tracker);
g_clear_object (&priv->dtm);
@ -1132,8 +1140,10 @@ setup_am_pm_button (CcDateTimePanel *self)
gtk_container_add (GTK_CONTAINER (priv->am_pm_stack), priv->am_label);
gtk_container_add (GTK_CONTAINER (priv->am_pm_stack), priv->pm_label);
gtk_widget_show_all (priv->am_pm_stack);
g_signal_connect_swapped (priv->am_pm_stack, "notify::visible-child",
G_CALLBACK (am_pm_stack_visible_child_changed_cb), self);
priv->am_pm_visiblity_changed_id = g_signal_connect_swapped (priv->am_pm_stack,
"notify::visible-child",
G_CALLBACK (am_pm_stack_visible_child_changed_cb),
self);
am_pm_stack_visible_child_changed_cb (self);
am_pm_button = W ("am_pm_button");