From: Mikhail Fludkov Date: Tue, 4 Aug 2015 15:09:35 +0000 (+0200) Subject: harness: fix the race in blocking push mode X-Git-Tag: 1.10.4~431 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=06ae41e0b211402d3032762ad4788ae3eef06a97;p=platform%2Fupstream%2Fgstreamer.git harness: fix the race in blocking push mode Depending on when gst_harness_pull was called - before the buffer reached gst_harness_chain or after we can get different behaviors of the test with enabled blocking push mode. The fix makes the behavior always the same. In pull function we get the buffer first, thus making sure gst_harness_chain waits for the signal, and emitting the signal after. https://bugzilla.gnome.org/show_bug.cgi?id=761931 --- diff --git a/libs/gst/check/gstharness.c b/libs/gst/check/gstharness.c index b878b2b..955e929 100644 --- a/libs/gst/check/gstharness.c +++ b/libs/gst/check/gstharness.c @@ -1538,6 +1538,8 @@ GstBuffer * gst_harness_pull (GstHarness * h) { GstHarnessPrivate *priv = h->priv; + GstBuffer *buf = (GstBuffer *) g_async_queue_timeout_pop (priv->buffer_queue, + G_USEC_PER_SEC * 60); if (priv->blocking_push_mode) { g_mutex_lock (&priv->blocking_push_mutex); @@ -1545,8 +1547,7 @@ gst_harness_pull (GstHarness * h) g_mutex_unlock (&priv->blocking_push_mutex); } - return (GstBuffer *) g_async_queue_timeout_pop (priv->buffer_queue, - G_USEC_PER_SEC * 60); + return buf; } /** @@ -1567,6 +1568,7 @@ GstBuffer * gst_harness_try_pull (GstHarness * h) { GstHarnessPrivate *priv = h->priv; + GstBuffer *buf = (GstBuffer *) g_async_queue_try_pop (priv->buffer_queue); if (priv->blocking_push_mode) { g_mutex_lock (&priv->blocking_push_mutex); @@ -1574,7 +1576,7 @@ gst_harness_try_pull (GstHarness * h) g_mutex_unlock (&priv->blocking_push_mutex); } - return (GstBuffer *) g_async_queue_try_pop (priv->buffer_queue); + return buf; } /**