timeline: Return FALSE when commiting an empty timeline
authorThibault Saunier <thibault.saunier@osg.samsung.com>
Mon, 6 Mar 2017 11:53:00 +0000 (08:53 -0300)
committerThibault Saunier <thibault.saunier@osg.samsung.com>
Mon, 6 Mar 2017 15:19:16 +0000 (12:19 -0300)
Meaning that ASYNC_DONE/COMMITED is always emited when TRUE is returned

ges/ges-timeline.c
tests/check/ges/backgroundsource.c

index 7e8010b..a72b088 100644 (file)
@@ -3368,6 +3368,9 @@ ges_timeline_commit_unlocked (GESTimeline * timeline)
 
   GST_DEBUG_OBJECT (timeline, "commiting changes");
 
+  if (ges_timeline_is_empty (timeline))
+    return FALSE;
+
   for (tmp = timeline->layers; tmp; tmp = tmp->next) {
     GESLayer *layer = tmp->data;
 
@@ -3425,7 +3428,9 @@ ges_timeline_commit_unlocked (GESTimeline * timeline)
  * for the signal.
  *
  * Returns: %TRUE if pending changes were commited or %FALSE if nothing needed
- * to be commited
+ * to be commited. This means that if %FALSE is returned then no "commited" signal
+ * will be emited.
+ *
  */
 gboolean
 ges_timeline_commit (GESTimeline * timeline)
index d32448d..693f561 100644 (file)
@@ -104,7 +104,7 @@ GST_START_TEST (test_test_source_properties)
 
   /* Test mute support */
   g_object_set (clip, "mute", TRUE, NULL);
-  fail_unless (ges_timeline_commit (timeline));
+  fail_if (ges_timeline_commit (timeline));
   nle_object_check (ges_track_element_get_nleobject (trackelement), 420, 510,
       120, 510, MIN_NLE_PRIO + TRANSITIONS_HEIGHT, FALSE);
   g_object_set (clip, "mute", FALSE, NULL);