[gnome-control-center/gnome-3-10] wacom: Don't leave stray timelines on the calibration UI
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center/gnome-3-10] wacom: Don't leave stray timelines on the calibration UI
- Date: Wed, 18 Dec 2013 18:05:05 +0000 (UTC)
commit 31bff4970fccab2b2bb749f8c44d39846393c4e9
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Nov 29 14:08:00 2013 +0100
wacom: Don't leave stray timelines on the calibration UI
Keep the reference for the error/helper messages animations in
the CalibArea struct, so those are destroyed and not leaked, or
possibly crashing when running on already destroyed actors if
the dialog gets cancelled at the right time.
https://bugzilla.gnome.org/show_bug.cgi?id=719698
panels/wacom/calibrator/calibrator-gui.c | 23 ++++++++++++++++++++++-
1 files changed, 22 insertions(+), 1 deletions(-)
---
diff --git a/panels/wacom/calibrator/calibrator-gui.c b/panels/wacom/calibrator/calibrator-gui.c
index 898fd38..73fcfcf 100644
--- a/panels/wacom/calibrator/calibrator-gui.c
+++ b/panels/wacom/calibrator/calibrator-gui.c
@@ -59,6 +59,8 @@ struct CalibArea
ClutterActor *helper_text_body;
ClutterActor *error_text;
ClutterTransition *clock_timeline;
+ ClutterTransition *error_msg_timeline;
+ ClutterTransition *helper_msg_timeline;
GdkPixbuf *icon_success;
FinishCallback callback;
@@ -153,6 +155,11 @@ on_delete_event (GtkWidget *widget,
{
clutter_timeline_stop (CLUTTER_TIMELINE (area->clock_timeline));
+ if (area->error_msg_timeline)
+ clutter_timeline_stop (CLUTTER_TIMELINE (area->error_msg_timeline));
+ if (area->helper_msg_timeline)
+ clutter_timeline_stop (CLUTTER_TIMELINE (area->helper_msg_timeline));
+
gtk_widget_hide (area->window);
(*area->callback) (area, area->user_data);
@@ -267,6 +274,9 @@ show_error_message (CalibArea *area)
clutter_actor_show (area->error_text);
transition = get_error_message_transition (area);
clutter_timeline_start (CLUTTER_TIMELINE (transition));
+
+ g_clear_object (&area->error_msg_timeline);
+ area->error_msg_timeline = transition;
}
static void
@@ -288,6 +298,9 @@ hide_error_message (CalibArea *area)
G_CALLBACK (on_error_message_transparent),
area);
clutter_timeline_start (CLUTTER_TIMELINE (transition));
+
+ g_clear_object (&area->error_msg_timeline);
+ area->error_msg_timeline = transition;
}
static gboolean
@@ -410,6 +423,9 @@ show_helper_text_body (CalibArea *area)
clutter_transition_set_from (transition, G_TYPE_FLOAT, -height);
clutter_transition_set_to (transition, G_TYPE_FLOAT, 0.0);
clutter_timeline_start (CLUTTER_TIMELINE (transition));
+
+ g_clear_object (&area->helper_msg_timeline);
+ area->helper_msg_timeline = transition;
}
static void
@@ -445,6 +461,9 @@ show_helper_text_title (CalibArea *area)
area);
clutter_timeline_start (CLUTTER_TIMELINE (transition));
+
+ g_clear_object (&area->helper_msg_timeline);
+ area->helper_msg_timeline = transition;
}
static void
@@ -776,7 +795,9 @@ calib_area_free (CalibArea *area)
g_return_if_fail (area != NULL);
g_clear_object (&area->icon_success);
-
+ g_clear_object (&area->clock_timeline);
+ g_clear_object (&area->error_msg_timeline);
+ g_clear_object (&area->helper_msg_timeline);
gtk_widget_destroy (area->window);
g_free (area);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]