summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clutter/clutter-actor.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index f59ec92d0..1c200d7fb 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -18493,6 +18493,9 @@ on_transition_stopped (ClutterTransition *transition,
info = _clutter_actor_get_animation_info (actor);
+ /* we need copies because we emit the signal after the
+ * TransitionClosure data structure has been freed
+ */
t_quark = g_quark_from_string (clos->name);
t_name = g_strdup (clos->name);
@@ -18505,12 +18508,12 @@ on_transition_stopped (ClutterTransition *transition,
g_object_ref (transition);
/* this is safe, because the timeline has now stopped,
- * so we won't recurse
+ * so we won't recurse; the reference on the Animatable
+ * will be dropped by the ::stopped signal closure in
+ * ClutterTransition, which is RUN_LAST, and thus will
+ * be called after this handler
*/
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