tests: fix audiocdsrc for changed preroll behaviour
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Mon, 7 Nov 2011 17:25:45 +0000 (17:25 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Sat, 12 Nov 2011 11:58:59 +0000 (11:58 +0000)
Previously, the source posted a TAG message before buffers would
even be pushed towards the sink, so we'd get the TAG message before
any ASYNC_DONE message. Now the tags get sent downstream to the sink
to get posted there, and the tag event will get queued and handled
later after preroll has finished, so now we get the ASYNC_DONE
message before the TAG message.

tests/check/libs/audiocdsrc.c

index 1f2e58b..534c427 100644 (file)
@@ -329,10 +329,21 @@ GST_START_TEST (test_discid_calculations)
     GST_CD_FOO_SRC (foosrc)->cur_disc = i;
     gst_element_set_state (pipeline, GST_STATE_PLAYING);
 
+    /* TAG messages are queued and only rendered after the preroll object has
+     * been prerolled (and ASYNC_DONE was posted), the TAG event got queued for
+     * processing/posting after that */
+    GST_LOG ("waiting for ASYNC_DONE message on the bus");
+    msg =
+        gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipeline),
+        GST_CLOCK_TIME_NONE, GST_MESSAGE_ASYNC_DONE);
+    gst_message_unref (msg);
+
+    GST_LOG ("waiting for TAG message on the bus");
     msg =
         gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipeline),
         GST_CLOCK_TIME_NONE, GST_MESSAGE_TAG);
     gst_message_parse_tag (msg, &tags);
+    GST_LOG ("got tags: %" GST_PTR_FORMAT, tags);
     fail_unless (tags != NULL);
     fail_unless (tag_list_has_tag (tags, "track-count", G_TYPE_UINT));
     fail_unless (tag_list_has_tag (tags, "track-number", G_TYPE_UINT));
@@ -345,11 +356,6 @@ GST_START_TEST (test_discid_calculations)
     gst_tag_list_free (tags);
     gst_message_unref (msg);
 
-    msg =
-        gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipeline),
-        GST_CLOCK_TIME_NONE, GST_MESSAGE_ASYNC_DONE);
-    gst_message_unref (msg);
-
     gst_element_set_state (pipeline, GST_STATE_NULL);
   }