tests: udpsrc: wait for buffers with GCond instead of sleeping
authorTim-Philipp Müller <tim@centricular.com>
Tue, 9 Sep 2014 14:55:18 +0000 (15:55 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Tue, 9 Sep 2014 16:42:02 +0000 (17:42 +0100)
Avoids half-second sleep for no reason.

tests/check/elements/udpsrc.c

index 944ec8a405cf8758abce1ed932c68c1aea989f7f..de5291e10eb4227c44588529bf1389d562c51aba 100644 (file)
@@ -83,10 +83,22 @@ GST_START_TEST (test_udpsrc_empty_packet)
 
       GST_INFO ("sent 6 bytes");
 
-      g_usleep (G_USEC_PER_SEC / 2);
+      g_mutex_lock (&check_mutex);
+      do {
+        g_cond_wait (&check_cond, &check_mutex);
+        len = g_list_length (buffers);
+        GST_INFO ("%u buffers", len);
+      } while (len < 1);
+
+      /* wait a bit more for a second buffer */
+      if (len < 2) {
+        g_cond_wait_until (&check_cond, &check_mutex,
+            g_get_monotonic_time () + G_TIME_SPAN_SECOND / 100);
+
+        len = g_list_length (buffers);
+        GST_INFO ("%u buffers", len);
+      }
 
-      len = g_list_length (buffers);
-      GST_INFO ("%u buffers", len);
       fail_unless (len == 1 || len == 2);
 
       /* last buffer should be our HeLL0 string */
@@ -101,6 +113,7 @@ GST_START_TEST (test_udpsrc_empty_packet)
         buf = GST_BUFFER (g_list_nth_data (buffers, 0));
         fail_unless_equals_int (gst_buffer_get_size (buf), 0);
       }
+      g_mutex_unlock (&check_mutex);
     } else {
       GST_WARNING ("send_to(6 bytes) failed");
     }