From 293cc5c6ca08ce3941b4ae6f87ce85ba4951e869 Mon Sep 17 00:00:00 2001 From: Brandon Lewis Date: Fri, 22 Oct 2010 14:02:29 +0100 Subject: [PATCH] GESTrack: keep track of trackobjects and remove/release them in dispose --- ges/ges-track.c | 9 ++++++++- ges/ges-track.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ges/ges-track.c b/ges/ges-track.c index 4dc4e70e22..0c5c79ed6d 100644 --- a/ges/ges-track.c +++ b/ges/ges-track.c @@ -88,7 +88,11 @@ ges_track_dispose (GObject * object) { GESTrack *track = (GESTrack *) object; - /* FIXME : Remove all TrackObjects ! */ + while (track->trackobjects) { + GESTrackObject *trobj = GES_TRACK_OBJECT (track->trackobjects->data); + ges_track_remove_object (track, trobj); + ges_timeline_object_release_track_object (trobj->timelineobj, trobj); + } if (track->composition) { gst_bin_remove (GST_BIN (object), track->composition); @@ -293,6 +297,8 @@ ges_track_add_object (GESTrack * track, GESTrackObject * object) return FALSE; } + track->trackobjects = g_list_append (track->trackobjects, object); + return TRUE; } @@ -325,6 +331,7 @@ ges_track_remove_object (GESTrack * track, GESTrackObject * object) } ges_track_object_set_track (object, NULL); + track->trackobjects = g_list_remove (track->trackobjects, object); return TRUE; } diff --git a/ges/ges-track.h b/ges/ges-track.h index 0213bfc110..7ad1e381fa 100644 --- a/ges/ges-track.h +++ b/ges/ges-track.h @@ -59,6 +59,7 @@ struct _GESTrack { /*< private >*/ GESTimeline * timeline; + GList * trackobjects; GstCaps * caps;