diff --git a/docs/libs/ges-sections.txt b/docs/libs/ges-sections.txt index c34714ee21..c63dac71a7 100644 --- a/docs/libs/ges-sections.txt +++ b/docs/libs/ges-sections.txt @@ -232,6 +232,7 @@ ges_timeline_layer_add_object ges_timeline_layer_new ges_timeline_layer_remove_object ges_timeline_layer_set_priority +ges_timeline_layer_get_objects ges_timeline_layer_set_timeline ges_timeline_layer_get_type diff --git a/ges/ges-timeline-layer.c b/ges/ges-timeline-layer.c index d7340cbae8..b732c7a9c0 100644 --- a/ges/ges-timeline-layer.c +++ b/ges/ges-timeline-layer.c @@ -333,3 +333,35 @@ ges_timeline_layer_set_priority (GESTimelineLayer * layer, guint priority) ges_timeline_layer_resync_priorities (layer); } } + +/** + * ges_timeline_layer_get_objects: + * @layer: a #GESTimelineLayer + * + * Get the timeline objects this layer contains. + * + * Returns: a #GList of timeline objects. The user is responsible for + * unreffing the contained objects and freeing the list. + */ + +GList * +ges_timeline_layer_get_objects (GESTimelineLayer * layer) +{ + GList *ret = NULL; + GSList *tmp; + GESTimelineLayerClass *klass; + + klass = GES_TIMELINE_LAYER_GET_CLASS (layer); + + if (klass->get_objects) { + return klass->get_objects (layer); + } + + for (tmp = layer->objects_start; tmp; tmp = tmp->next) { + ret = g_list_prepend (ret, tmp->data); + g_object_ref (tmp->data); + } + + ret = g_list_reverse (ret); + return ret; +} diff --git a/ges/ges-timeline-layer.h b/ges/ges-timeline-layer.h index 0bef229932..61961d82b1 100644 --- a/ges/ges-timeline-layer.h +++ b/ges/ges-timeline-layer.h @@ -73,6 +73,8 @@ struct _GESTimelineLayer { struct _GESTimelineLayerClass { GObjectClass parent_class; + GList *(*get_objects) (GESTimelineLayer * layer); + /*< signals >*/ void (*object_added) (GESTimelineLayer * layer, GESTimelineObject * object); void (*object_removed) (GESTimelineLayer * layer, GESTimelineObject * object); @@ -87,6 +89,7 @@ gboolean ges_timeline_layer_add_object (GESTimelineLayer * layer, GESTimelineObj gboolean ges_timeline_layer_remove_object (GESTimelineLayer * layer, GESTimelineObject * object); void ges_timeline_layer_set_priority (GESTimelineLayer * layer, guint priority); +GList * ges_timeline_layer_get_objects (GESTimelineLayer * layer); G_END_DECLS