[MOVED FROM GST-P-FARSIGHT] Unlock liveadder empty buffer gcond on flush
authorOlivier Crete <olivier.crete@collabora.co.uk>
Mon, 21 Apr 2008 03:26:14 +0000 (03:26 +0000)
committerEdward Hervey <bilboed@bilboed.com>
Tue, 17 Feb 2009 18:29:04 +0000 (19:29 +0100)
20080421032614-3e2dc-4ed29e1583ff684338ba5d7611f60b1a7eaff563.gz

gst/liveadder/liveadder.c

index 8b6e6f6c649622d4f03e2e76b304be870dc5d0a7..d7ec7ed9d74abd2df65d285f7576e92a8542230e 100644 (file)
@@ -452,6 +452,8 @@ gst_live_adder_flush_start (GstLiveAdder * adder)
    * locking streaming thread. */
   if (adder->clock_id)
     gst_clock_id_unschedule (adder->clock_id);
+
+  g_cond_broadcast (adder->not_empty_cond);
   GST_OBJECT_UNLOCK (adder);
 }
 
@@ -1029,12 +1031,12 @@ gst_live_adder_loop (gpointer data)
 
   for (;;)
   {
+    if (adder->srcresult != GST_FLOW_OK)
+      goto flushing;
     if (!g_queue_is_empty (adder->buffers))
       break;
     if (check_eos_locked (adder))
       goto eos;
-    if (adder->srcresult != GST_FLOW_OK)
-      goto flushing;
     g_cond_wait (adder->not_empty_cond, GST_OBJECT_GET_LOCK(adder));
   }