}
static void
+add_object_to_track (GESTimelineObject * object, GESTrack * track)
+{
+ if (!ges_timeline_object_create_track_objects (object, track)) {
+ GST_WARNING ("error creating track objects");
+ }
+}
+
+static void
add_object_to_tracks (GESTimeline * timeline, GESTimelineObject * object)
{
GList *tmp;
GESTrack *track = priv->track;
GST_LOG ("Trying with track %p", track);
- if (!ges_timeline_object_create_track_objects (object, track)) {
- GST_WARNING ("error creating track objects");
- }
+ add_object_to_track (object, track);
}
}
+
static void
do_async_start (GESTimeline * timeline)
{
{
gchar *padname;
+
GST_DEBUG ("track:%p, pad:%s:%s", track, GST_DEBUG_PAD_NAME (pad));
if (G_UNLIKELY (priv->pad)) {
ges_timeline_add_track (GESTimeline * timeline, GESTrack * track)
{
TrackPrivate *priv;
+ GList *tmp;
GST_DEBUG ("timeline:%p, track:%p", timeline, track);
/* emit 'track-added' */
g_signal_emit (timeline, ges_timeline_signals[TRACK_ADDED], 0, track);
+ /* ensure that each existing timeline object has the opportunity to create a
+ * track object for this track*/
+
+ for (tmp = timeline->layers; tmp; tmp = tmp->next) {
+ GList *objects, *obj;
+ objects = ges_timeline_layer_get_objects (tmp->data);
+
+ for (obj = objects; obj; obj = obj->next) {
+ add_object_to_track (obj->data, track);
+ g_object_unref (obj->data);
+ obj->data = NULL;
+ }
+ g_list_free (objects);
+ }
+
return TRUE;
}