From 03c1c76652389a9d636e16b0e2ee7df1e6a019da Mon Sep 17 00:00:00 2001 From: Brandon Lewis Date: Wed, 7 Jul 2010 17:07:33 +0200 Subject: [PATCH] split timeline_object_add_track_object out of create_track_object --- docs/libs/ges-sections.txt | 1 + ges/ges-timeline-object.c | 62 +++++++++++++++++++++++++------------- ges/ges-timeline-object.h | 6 +++- 3 files changed, 47 insertions(+), 22 deletions(-) diff --git a/docs/libs/ges-sections.txt b/docs/libs/ges-sections.txt index 370e2db74c..daee536af3 100644 --- a/docs/libs/ges-sections.txt +++ b/docs/libs/ges-sections.txt @@ -258,6 +258,7 @@ ges_timeline_object_set_start ges_timeline_object_set_duration ges_timeline_object_find_track_object CreateTrackObjectsFunc +ges_timeline_object_add_track_object ges_timeline_object_create_track_objects ges_timeline_object_create_track_object diff --git a/ges/ges-timeline-object.c b/ges/ges-timeline-object.c index 42c62c9386..083f6bce4e 100644 --- a/ges/ges-timeline-object.c +++ b/ges/ges-timeline-object.c @@ -194,28 +194,9 @@ ges_timeline_object_create_track_object (GESTimelineObject * object, } res = class->create_track_object (object, track); - - if (res) { - GST_DEBUG - ("Got a TrackObject : %p , setting the timeline object as its creator", - res); - ges_track_object_set_timeline_object (res, object); - - GST_DEBUG ("Adding TrackObject to the list of controlled track objects"); - /* We steal the initial reference */ - object->trackobjects = g_list_append (object->trackobjects, res); - - GST_DEBUG ("Setting properties on newly created TrackObject"); - - ges_track_object_set_start_internal (res, object->start); - ges_track_object_set_priority_internal (res, object->priority); - ges_track_object_set_duration_internal (res, object->duration); - ges_track_object_set_inpoint_internal (res, object->inpoint); - } - - GST_DEBUG ("Returning res:%p", res); - + ges_timeline_object_add_track_object (object, res); return res; + } /** @@ -262,6 +243,45 @@ ges_timeline_object_create_track_objects_func (GESTimelineObject * object, return ges_track_add_object (track, result); } +/** + * ges_timeline_object_add_track_object: + * @object: a #GESTimelineObject + * @trobj: the GESTrackObject + * + * Add a track object to the timeline object. Should only be called by + * subclasses implementing the create_track_objects (plural) vmethod. + * + * Returns: %TRUE on success, %FALSE on failure. + */ + +gboolean +ges_timeline_object_add_track_object (GESTimelineObject * object, GESTrackObject + * trobj) +{ + GST_LOG ("Got a TrackObject : %p , setting the timeline object as its" + "creator", trobj); + + if (!trobj) + return FALSE; + + ges_track_object_set_timeline_object (trobj, object); + + GST_DEBUG ("Adding TrackObject to the list of controlled track objects"); + /* We steal the initial reference */ + object->trackobjects = g_list_append (object->trackobjects, trobj); + + GST_DEBUG ("Setting properties on newly created TrackObject"); + + ges_track_object_set_start_internal (trobj, object->start); + ges_track_object_set_priority_internal (trobj, object->priority); + ges_track_object_set_duration_internal (trobj, object->duration); + ges_track_object_set_inpoint_internal (trobj, object->inpoint); + + GST_DEBUG ("Returning trobj:%p", trobj); + + return TRUE; +} + /** * ges_timeline_object_release_track_object: * @object: a #GESTimelineObject diff --git a/ges/ges-timeline-object.h b/ges/ges-timeline-object.h index c71997db4c..3ce882278b 100644 --- a/ges/ges-timeline-object.h +++ b/ges/ges-timeline-object.h @@ -86,7 +86,7 @@ typedef GESTrackObject* (*CreateTrackObjectFunc) (GESTimelineObject * object, /** * CreateTrackObjectFunc: * @object: a #GESTimelineObject - * @track: a #GESTimelineTrack + * @track: a #GESTrack * * Create all track objects this object handles for this type of track. * @@ -203,6 +203,10 @@ GESTrackObject * ges_timeline_object_find_track_object (GESTimelineObject * object, GESTrack * track); +gboolean +ges_timeline_object_add_track_object (GESTimelineObject *object, GESTrackObject + *trobj); + G_END_DECLS #endif /* _GES_TIMELINE_OBJECT */