mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-09-02 18:23:56 +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;
|
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) {
|
if (track->composition) {
|
||||||
gst_bin_remove (GST_BIN (object), track->composition);
|
gst_bin_remove (GST_BIN (object), track->composition);
|
||||||
|
@ -293,6 +297,8 @@ ges_track_add_object (GESTrack * track, GESTrackObject * object)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
track->trackobjects = g_list_append (track->trackobjects, object);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,6 +331,7 @@ ges_track_remove_object (GESTrack * track, GESTrackObject * object)
|
||||||
}
|
}
|
||||||
|
|
||||||
ges_track_object_set_track (object, NULL);
|
ges_track_object_set_track (object, NULL);
|
||||||
|
track->trackobjects = g_list_remove (track->trackobjects, object);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,7 @@ struct _GESTrack {
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
GESTimeline * timeline;
|
GESTimeline * timeline;
|
||||||
|
GList * trackobjects;
|
||||||
|
|
||||||
GstCaps * caps;
|
GstCaps * caps;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue