summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clutter/clutter-actor.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index 404776dd6..be6ca9b41 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -18470,7 +18470,9 @@ transition_closure_free (gpointer data)
if (clutter_timeline_is_playing (timeline))
clutter_timeline_stop (timeline);
+ /* remove the reference added in add_transition_internal() */
g_object_unref (clos->transition);
+
g_free (clos->name);
g_slice_free (TransitionClosure, clos);
@@ -18502,9 +18504,7 @@ on_transition_stopped (ClutterTransition *transition,
{
/* we take a reference here because removing the closure
* will release the reference on the transition, and we
- * want the transition to survive the signal emission;
- * the master clock will release the last reference at
- * the end of the frame processing.
+ * want the transition to survive the signal emission
*/
g_object_ref (transition);
@@ -18512,6 +18512,9 @@ on_transition_stopped (ClutterTransition *transition,
* so we won't recurse
*/
g_hash_table_remove (info->transitions, clos->name);
+
+ /* we can release the reference here */
+ g_object_unref (transition);
}
/* we emit the ::transition-stopped after removing the