diff options
-rw-r--r-- | clutter/clutter-actor.c | 9 |
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 |