From cc7eb2df1b76f25204d8ca57b2f16df14aebe4c1 Mon Sep 17 00:00:00 2001 From: Sergio Villar Senin Date: Wed, 2 Jul 2008 18:44:11 +0000 Subject: [PATCH] * Fixes a crash in the dimming rules when a window is destroyed and there are pending dimming rules pmo-trunk-r4870 --- src/modest-dimming-rules-group.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/modest-dimming-rules-group.c b/src/modest-dimming-rules-group.c index 9f74837..89c388f 100644 --- a/src/modest-dimming-rules-group.c +++ b/src/modest-dimming-rules-group.c @@ -41,6 +41,9 @@ static void modest_dimming_rules_group_finalize (GObject *obj); static void _insensitive_press_callback (GtkWidget *widget, gpointer user_data); #endif +static void on_window_destroy (gpointer data, + GObject *object); + static void _add_rule (ModestDimmingRulesGroup *self, ModestDimmingRule *rule, ModestWindow *window); @@ -250,6 +253,7 @@ modest_dimming_rules_group_add_rules (ModestDimmingRulesGroup *self, /* Set window to process dimming rules */ priv->window = MODEST_WINDOW (window); + g_object_weak_ref (G_OBJECT (window), on_window_destroy, self); /* Add dimming rules */ for (i=0; i < n_elements; i++) { @@ -296,6 +300,9 @@ modest_dimming_rules_group_execute (ModestDimmingRulesGroup *self) g_return_if_fail (MODEST_IS_DIMMING_RULES_GROUP(self)); priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE(self); + if (!priv->window) + return; + /* Init dimming rules init data */ state = modest_ui_dimming_rules_define_dimming_state (priv->window); modest_window_set_dimming_state (priv->window, state); @@ -359,3 +366,13 @@ _insensitive_press_callback (GtkWidget *widget, gpointer user_data) g_free(notification); } #endif + +static void +on_window_destroy (gpointer data, + GObject *object) +{ + ModestDimmingRulesGroup *self = MODEST_DIMMING_RULES_GROUP (data); + ModestDimmingRulesGroupPrivate *priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE (self); + + priv->window = NULL; +} -- 1.7.9.5