mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-11 10:34:11 +00:00
GESTrack: keep track of trackobjects and remove/release them in dispose
This commit is contained in:
parent
9f2f21d8df
commit
293cc5c6ca
2 changed files with 9 additions and 1 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ struct _GESTrack {
|
|||
|
||||
/*< private >*/
|
||||
GESTimeline * timeline;
|
||||
GList * trackobjects;
|
||||
|
||||
GstCaps * caps;
|
||||
|
||||
|
|
Loading…
Reference in a new issue