[farsight2/master] Make sure it works even in racy case

Olivier Crête olivier.crete at collabora.co.uk
Tue Dec 23 15:22:04 PST 2008


---
 tests/check/transmitter/rawudp.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/tests/check/transmitter/rawudp.c b/tests/check/transmitter/rawudp.c
index 76848bf..b0f84d8 100644
--- a/tests/check/transmitter/rawudp.c
+++ b/tests/check/transmitter/rawudp.c
@@ -34,6 +34,7 @@ GMainLoop *loop = NULL;
 gint candidates[2] = {0, 0};
 GstElement *pipeline = NULL;
 gboolean src_setup[2] = {FALSE, FALSE};
+volatile gint running = TRUE;
 
 enum {
   FLAG_HAS_STUN = 1 << 0,
@@ -154,7 +155,10 @@ _local_candidates_prepared (FsStreamTransmitter *st, gpointer user_data)
    */
 
   if (has_stun)
+  {
     g_main_loop_quit (loop);
+    g_atomic_int_set(&running, FALSE);
+  }
 }
 
 
@@ -198,10 +202,21 @@ _handoff_handler (GstElement *element, GstBuffer *buffer, GstPad *pad,
 
   if (buffer_count[0] == 20 && buffer_count[1] == 20) {
     /* TEST OVER */
+    g_atomic_int_set(&running, FALSE);
     g_main_loop_quit (loop);
   }
 }
 
+static gboolean
+check_running (gpointer data)
+{
+  if (g_atomic_int_get (&running) == FALSE)
+    g_main_loop_quit (loop);
+
+  return FALSE;
+}
+
+
 static void
 run_rawudp_transmitter_test (gint n_parameters, GParameter *params,
   gint flags)
@@ -272,6 +287,8 @@ run_rawudp_transmitter_test (gint n_parameters, GParameter *params,
           " (without a specified error)");
   }
 
+  g_idle_add (check_running, NULL);
+
   g_main_run (loop);
 
  skip:
@@ -405,6 +422,7 @@ _bus_stop_stream_cb (GstBus *bus, GstMessage *message, gpointer user_data)
 
   g_object_unref (st);
 
+  g_atomic_int_set(&running, FALSE);
   g_main_loop_quit (loop);
 
   return TRUE;
@@ -464,6 +482,8 @@ GST_START_TEST (test_rawudptransmitter_stop_stream)
           " (without a specified error)");
   }
 
+  g_idle_add (check_running, NULL);
+
   g_main_run (loop);
 
   gst_element_set_state (pipeline, GST_STATE_NULL);
-- 
1.5.6.5




More information about the farsight-commits mailing list