clip: change order of split
authorHenry Wilkes <hwilkes@igalia.com>
Tue, 21 Apr 2020 11:55:34 +0000 (12:55 +0100)
committerHenry Wilkes <hwilkes@igalia.com>
Thu, 7 May 2020 08:37:15 +0000 (09:37 +0100)
commit5c546c6fe7c51d4949fd46f83d4622aa7a236bfa
tree8f387515a1e265b6589b208436cc9b39933b5934
parenta4cfa6d1e1d69bc200bbe96a409765efc5631b11
clip: change order of split

We first change the duration of the splitted clip, then we add the new
clip to the layer and assign the tracks for its children. Normally, when
a clip is added to a layer it will have its track elements created, if
needed, and then assigned to their tracks. This will fail if any sources
would fully or triple overlap existing sources in the same track.

However, here we were adding the clip to the layer *and* avoiding the
track assignment process and instead setting the tracks explicitly. In
particular, the order was:

+ add new clip to layer with no tracks assigned
+ shrink the split clip
+ assign the tracks for the new clip

This has been changed to:

+ shrink the split clip
+ add new clip to layer with no tracks assigned
+ assign the tracks for the new clip

Thus, the order of events for any users connecting to object signals
will be close to that of adding another clip to the layer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/169>
ges/ges-clip.c
tests/check/ges/clip.c