diff options
author | Mart Raudsepp <mart.raudsepp@collabora.com> | 2019-04-12 17:30:14 +0300 |
---|---|---|
committer | Thibault Saunier <tsaunier@gnome.org> | 2019-04-17 20:17:59 +0000 |
commit | 0c592ad6acaac2e6b65586232e7849218c652b39 (patch) | |
tree | 7c2e0aed550d82fb0357fa20bbcbc486b49692f4 | |
parent | 6a0f2358ce7324e0a08d70c9b2ab2eabcbd4e921 (diff) |
track: Avoid various sorting operations before timeline commit
These are showing up in performance profile of 1000+ clips looped addition.
All this is done at commit time as well, so let that do only one update and
sorting.
-rw-r--r-- | ges/ges-track.c | 20 |
1 files changed, 0 insertions, 20 deletions
diff --git a/ges/ges-track.c b/ges/ges-track.c index b23d47cc..3cb3859c 100644 --- a/ges/ges-track.c +++ b/ges/ges-track.c @@ -281,14 +281,6 @@ update_field (GQuark field_id, const GValue * value, GstStructure * original) /* callbacks */ static void -sort_track_elements_cb (GESTrackElement * child, - GParamSpec * arg G_GNUC_UNUSED, GESTrack * track) -{ - g_sequence_sort (track->priv->trackelements_by_start, - (GCompareDataFunc) element_start_compare, NULL); -} - -static void _ghost_nlecomposition_srcpad (GESTrack * track) { GstPad *capsfilter_sink; @@ -380,8 +372,6 @@ remove_object_internal (GESTrack * track, GESTrackElement * object) } } - g_signal_handlers_disconnect_by_func (object, sort_track_elements_cb, NULL); - ges_track_element_set_track (object, NULL); ges_timeline_element_set_timeline (GES_TIMELINE_ELEMENT (object), NULL); @@ -987,15 +977,6 @@ ges_track_add_element (GESTrack * track, GESTrackElement * object) g_signal_emit (track, ges_track_signals[TRACK_ELEMENT_ADDED], 0, GES_TRACK_ELEMENT (object)); - g_signal_connect (GES_TRACK_ELEMENT (object), "notify::start", - G_CALLBACK (sort_track_elements_cb), track); - - g_signal_connect (GES_TRACK_ELEMENT (object), "notify::duration", - G_CALLBACK (sort_track_elements_cb), track); - - g_signal_connect (GES_TRACK_ELEMENT (object), "notify::priority", - G_CALLBACK (sort_track_elements_cb), track); - return TRUE; } @@ -1052,7 +1033,6 @@ ges_track_remove_element (GESTrack * track, GESTrackElement * object) it = g_hash_table_lookup (priv->trackelements_iter, object); g_sequence_remove (it); - track_resort_and_fill_gaps (track); if (remove_object_internal (track, object) == TRUE) { ges_timeline_element_set_timeline (GES_TIMELINE_ELEMENT (object), NULL); |