From 06ae41e0b211402d3032762ad4788ae3eef06a97 Mon Sep 17 00:00:00 2001 From: Mikhail Fludkov Date: Tue, 4 Aug 2015 17:09:35 +0200 Subject: [PATCH] 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 --- libs/gst/check/gstharness.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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; } /** -- 2.7.4