clock: Don't allow setting an unsynced clock as master
authorSebastian Dröge <sebastian@centricular.com>
Tue, 5 Jan 2016 12:23:26 +0000 (14:23 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 5 Jan 2016 12:23:26 +0000 (14:23 +0200)
gst/gstclock.c

index d3eaf9d..70583c4 100644 (file)
@@ -1230,6 +1230,9 @@ gst_clock_set_master (GstClock * clock, GstClock * master)
   /* we always allow setting the master to NULL */
   if (master && !GST_OBJECT_FLAG_IS_SET (clock, GST_CLOCK_FLAG_CAN_SET_MASTER))
     goto not_supported;
+  if (master && !gst_clock_is_synced (master))
+    goto master_not_synced;
+
   GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock,
       "slaving %p to master clock %p", clock, master);
   GST_OBJECT_UNLOCK (clock);
@@ -1270,6 +1273,14 @@ not_supported:
     GST_OBJECT_UNLOCK (clock);
     return FALSE;
   }
+
+master_not_synced:
+  {
+    GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, master,
+        "master clock is not synced yet");
+    GST_OBJECT_UNLOCK (clock);
+    return FALSE;
+  }
 }
 
 /**