tests/check/elements/queue.c: fix race in underrun test
authorStefan Kost <ensonic@users.sourceforge.net>
Thu, 21 Dec 2006 14:24:54 +0000 (14:24 +0000)
committerStefan Kost <ensonic@users.sourceforge.net>
Thu, 21 Dec 2006 14:24:54 +0000 (14:24 +0000)
Original commit message from CVS:
* tests/check/elements/queue.c: (queue_overrun), (queue_underrun),
(GST_START_TEST):
fix race in underrun test

ChangeLog
tests/check/elements/queue.c

index 057001d..db1b6b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2006-12-21  Stefan Kost  <ensonic@users.sf.net>
 
+       * tests/check/elements/queue.c: (queue_overrun), (queue_underrun),
+       (GST_START_TEST):
+         fix race in underrun test
+
+2006-12-21  Stefan Kost  <ensonic@users.sf.net>
+
        * tests/check/elements/.cvsignore:
          ignore more
 
index a30212b..176f2de 100644 (file)
@@ -53,7 +53,10 @@ static void
 queue_underrun (GstElement * queue, gpointer user_data)
 {
   GST_DEBUG ("queue underrun");
+  g_mutex_lock (check_mutex);
   underrun_count++;
+  g_cond_signal (check_cond);
+  g_mutex_unlock (check_mutex);
 }
 
 GstElement *
@@ -99,12 +102,13 @@ GST_START_TEST (test_non_leaky_underrun)
           GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
       "could not set to playing");
 
-  /* do we need to wait here a little */
-  usleep (100);
-   /**/ GST_DEBUG ("running");
+  GST_DEBUG ("running");
+  g_mutex_lock (check_mutex);
+  g_cond_wait (check_cond, check_mutex);
+  g_mutex_unlock (check_mutex);
 
   fail_unless (overrun_count == 0);
-  fail_unless (underrun_count > 0);
+  fail_unless (underrun_count == 1);
 
   fail_unless (buffer == NULL);