actor: Remove transition when stopping it
This covers more cases when the transition completes but was still being tracked by its actor. https://bugzilla.gnome.org/show_bug.cgi?id=685982
This commit is contained in:
parent
78a7a60b89
commit
060b05cc29
@ -3953,9 +3953,14 @@ _clutter_actor_stop_transitions (ClutterActor *self)
|
|||||||
{
|
{
|
||||||
TransitionClosure *closure = value;
|
TransitionClosure *closure = value;
|
||||||
|
|
||||||
/* if the transition is implicit we just remove it now */
|
/* implicit transitions, and automatically managed explicit ones,
|
||||||
if (closure->is_implicit)
|
* should be removed at this point
|
||||||
g_hash_table_iter_remove (&iter);
|
*/
|
||||||
|
if (closure->is_implicit ||
|
||||||
|
clutter_transition_get_remove_on_complete (closure->transition))
|
||||||
|
{
|
||||||
|
g_hash_table_iter_remove (&iter);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* otherwise we stop it, and the transition will be removed
|
/* otherwise we stop it, and the transition will be removed
|
||||||
@ -18525,7 +18530,8 @@ on_transition_stopped (ClutterTransition *transition,
|
|||||||
t_quark = g_quark_from_string (clos->name);
|
t_quark = g_quark_from_string (clos->name);
|
||||||
t_name = g_strdup (clos->name);
|
t_name = g_strdup (clos->name);
|
||||||
|
|
||||||
if (clos->is_implicit)
|
if (clos->is_implicit ||
|
||||||
|
clutter_transition_get_remove_on_complete (transition))
|
||||||
{
|
{
|
||||||
/* we take a reference here because removing the closure
|
/* we take a reference here because removing the closure
|
||||||
* will release the reference on the transition, and we
|
* will release the reference on the transition, and we
|
||||||
|
Loading…
x
Reference in New Issue
Block a user