animator: fix removal of multiple keys
When removing keys, sometimes a couple of keys would be remaining.
This commit is contained in:
parent
ec05230b97
commit
290038ee68
@ -1407,7 +1407,8 @@ clutter_animator_remove_key_internal (ClutterAnimator *animator,
|
|||||||
|
|
||||||
priv = animator->priv;
|
priv = animator->priv;
|
||||||
|
|
||||||
for (k = priv->score; k != NULL; k = k?k->next:NULL)
|
again:
|
||||||
|
for (k = priv->score; k != NULL; k = k->next)
|
||||||
{
|
{
|
||||||
ClutterAnimatorKey *key = k->data;
|
ClutterAnimatorKey *key = k->data;
|
||||||
|
|
||||||
@ -1439,8 +1440,8 @@ clutter_animator_remove_key_internal (ClutterAnimator *animator,
|
|||||||
next_key->ease_in = key->ease_in;
|
next_key->ease_in = key->ease_in;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
priv->score = g_list_remove (priv->score, key);
|
||||||
k = priv->score = g_list_remove (priv->score, key);
|
goto again;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1449,7 +1450,7 @@ clutter_animator_remove_key_internal (ClutterAnimator *animator,
|
|||||||
GHashTableIter iter;
|
GHashTableIter iter;
|
||||||
gpointer key, value;
|
gpointer key, value;
|
||||||
|
|
||||||
again:
|
again2:
|
||||||
g_hash_table_iter_init (&iter, priv->properties);
|
g_hash_table_iter_init (&iter, priv->properties);
|
||||||
while (g_hash_table_iter_next (&iter, &key, &value))
|
while (g_hash_table_iter_next (&iter, &key, &value))
|
||||||
{
|
{
|
||||||
@ -1457,7 +1458,7 @@ again:
|
|||||||
if (prop_actor_key->object == object)
|
if (prop_actor_key->object == object)
|
||||||
{
|
{
|
||||||
g_hash_table_remove (priv->properties, key);
|
g_hash_table_remove (priv->properties, key);
|
||||||
goto again;
|
goto again2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user