diff --git a/docs/libs/ges-sections.txt b/docs/libs/ges-sections.txt index 9229e6915d..570caba1a3 100644 --- a/docs/libs/ges-sections.txt +++ b/docs/libs/ges-sections.txt @@ -376,6 +376,7 @@ ges_timeline_set_auto_transition ges_timeline_get_snapping_distance ges_timeline_set_snapping_distance ges_timeline_get_element +ges_timeline_is_empty GESTimelinePrivate GESTimelineClass diff --git a/ges/ges-timeline.c b/ges/ges-timeline.c index 013d7fac1c..89563eee9c 100644 --- a/ges/ges-timeline.c +++ b/ges/ges-timeline.c @@ -3187,3 +3187,32 @@ ges_timeline_get_element (GESTimeline * timeline, const gchar * name) return NULL; } + +/** + * ges_timeline_is_empty: + * @timeline: a #GESTimeline + * + * Check whether a #GESTimelineElement is empty or not + * + * Returns: %TRUE if the timeline is empty %FALSE otherwize + */ +gboolean +ges_timeline_is_empty (GESTimeline * timeline) +{ + GHashTableIter iter; + gpointer key, value; + + g_return_val_if_fail (GES_IS_TIMELINE (timeline), FALSE); + + if (g_hash_table_size (timeline->priv->all_elements) == 0) + return TRUE; + + g_hash_table_iter_init (&iter, timeline->priv->all_elements); + while (g_hash_table_iter_next (&iter, &key, &value)) { + if (GES_IS_SOURCE (value) && + ges_track_element_is_active (GES_TRACK_ELEMENT (value))) + return FALSE; + } + + return TRUE; +} diff --git a/ges/ges-timeline.h b/ges/ges-timeline.h index f1d2bf811d..bbcc83aa3e 100644 --- a/ges/ges-timeline.h +++ b/ges/ges-timeline.h @@ -126,6 +126,7 @@ void ges_timeline_set_auto_transition (GESTimeline * timeline, gboolean auto_tra GstClockTime ges_timeline_get_snapping_distance (GESTimeline * timeline); void ges_timeline_set_snapping_distance (GESTimeline * timeline, GstClockTime snapping_distance); GESTimelineElement * ges_timeline_get_element (GESTimeline * timeline, const gchar *name); +gboolean ges_timeline_is_empty (GESTimeline * timeline); G_END_DECLS