diff options
author | Mathieu Duponchelle <seeed@laposte.net> | 2011-07-27 02:04:48 +0200 |
---|---|---|
committer | Thibault Saunier <thibault.saunier@collabora.com> | 2012-01-11 11:56:14 -0300 |
commit | 9413d9f9e902fef7a36911a009d7232083136119 (patch) | |
tree | 2e7c9d3bff52658d26b109f203faacba7791234f | |
parent | 32ce69684c6ab7cadfb283db8d101cfb09ed0dbf (diff) |
ges: Keep the track object list sorted in track
-rw-r--r-- | ges/ges-track.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/ges/ges-track.c b/ges/ges-track.c index c61451ac..71cc6cb0 100644 --- a/ges/ges-track.c +++ b/ges/ges-track.c @@ -69,6 +69,9 @@ static void pad_removed_cb (GstElement * element, GstPad * pad, GESTrack * track); static void composition_duration_cb (GstElement * composition, GParamSpec * arg G_GNUC_UNUSED, GESTrack * obj); +static void +sort_track_objects_cb (GESTrackObject * child, + GParamSpec * arg G_GNUC_UNUSED, GESTrack * track); static void ges_track_get_property (GObject * object, guint property_id, @@ -409,6 +412,12 @@ ges_track_add_object (GESTrack * track, GESTrackObject * object) g_signal_emit (track, ges_track_signals[TRACK_OBJECT_ADDED], 0, GES_TRACK_OBJECT (object)); + g_signal_connect (GES_TRACK_OBJECT (object), "notify::start", + G_CALLBACK (sort_track_objects_cb), track); + + g_signal_connect (GES_TRACK_OBJECT (object), "notify::priority", + G_CALLBACK (sort_track_objects_cb), track); + return TRUE; } @@ -534,6 +543,15 @@ composition_duration_cb (GstElement * composition, } } +static void +sort_track_objects_cb (GESTrackObject * child, + GParamSpec * arg G_GNUC_UNUSED, GESTrack * track) +{ + track->priv->trackobjects = + g_list_sort (track->priv->trackobjects, + (GCompareFunc) objects_start_compare); +} + /** * ges_track_get_caps: * @track: a #GESTrack |