timeline: Fix infinite loop on dispose

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D628
This commit is contained in:
Thibault Saunier 2016-01-06 18:14:07 +01:00
parent 2fae9ee50d
commit 0c46363f74

View file

@ -338,6 +338,7 @@ ges_timeline_dispose (GObject * object)
{
GESTimeline *tl = GES_TIMELINE (object);
GESTimelinePrivate *priv = tl->priv;
GList *tmp;
while (tl->layers) {
GESLayer *layer = (GESLayer *) tl->layers->data;
@ -352,10 +353,12 @@ ges_timeline_dispose (GObject * object)
while (tl->tracks)
ges_timeline_remove_track (GES_TIMELINE (object), tl->tracks->data);
while (priv->groups)
g_list_free_full (ges_container_ungroup (priv->groups->data, FALSE),
for (tmp = priv->groups; tmp; tmp = tmp->next)
g_list_free_full (ges_container_ungroup (tmp->data, FALSE),
gst_object_unref);
g_list_free (priv->groups);
g_hash_table_unref (priv->by_start);
g_hash_table_unref (priv->by_end);
g_hash_table_unref (priv->by_object);