mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-20 00:31:13 +00:00
harness: move creating of buffer and event queues to harness itself
By only having it on sinkpad-creation, it is racy to write a test with a sometimes-pad (like a demuxer) that you want to pull from, having the pull wait until the pad arrives and the buffer can be produced.
This commit is contained in:
parent
604ea0e711
commit
229b4776ea
1 changed files with 11 additions and 15 deletions
|
@ -540,13 +540,9 @@ static void
|
||||||
gst_harness_setup_src_pad (GstHarness * h,
|
gst_harness_setup_src_pad (GstHarness * h,
|
||||||
GstStaticPadTemplate * src_tmpl, const gchar * element_sinkpad_name)
|
GstStaticPadTemplate * src_tmpl, const gchar * element_sinkpad_name)
|
||||||
{
|
{
|
||||||
GstHarnessPrivate *priv = h->priv;
|
|
||||||
g_assert (src_tmpl);
|
g_assert (src_tmpl);
|
||||||
g_assert (h->srcpad == NULL);
|
g_assert (h->srcpad == NULL);
|
||||||
|
|
||||||
priv->src_event_queue =
|
|
||||||
g_async_queue_new_full ((GDestroyNotify) gst_event_unref);
|
|
||||||
|
|
||||||
/* sending pad */
|
/* sending pad */
|
||||||
h->srcpad = gst_pad_new_from_static_template (src_tmpl, "src");
|
h->srcpad = gst_pad_new_from_static_template (src_tmpl, "src");
|
||||||
g_assert (h->srcpad);
|
g_assert (h->srcpad);
|
||||||
|
@ -565,15 +561,9 @@ static void
|
||||||
gst_harness_setup_sink_pad (GstHarness * h,
|
gst_harness_setup_sink_pad (GstHarness * h,
|
||||||
GstStaticPadTemplate * sink_tmpl, const gchar * element_srcpad_name)
|
GstStaticPadTemplate * sink_tmpl, const gchar * element_srcpad_name)
|
||||||
{
|
{
|
||||||
GstHarnessPrivate *priv = h->priv;
|
|
||||||
g_assert (sink_tmpl);
|
g_assert (sink_tmpl);
|
||||||
g_assert (h->sinkpad == NULL);
|
g_assert (h->sinkpad == NULL);
|
||||||
|
|
||||||
priv->buffer_queue = g_async_queue_new_full (
|
|
||||||
(GDestroyNotify) gst_buffer_unref);
|
|
||||||
priv->sink_event_queue = g_async_queue_new_full (
|
|
||||||
(GDestroyNotify) gst_event_unref);
|
|
||||||
|
|
||||||
/* receiving pad */
|
/* receiving pad */
|
||||||
h->sinkpad = gst_pad_new_from_static_template (sink_tmpl, "sink");
|
h->sinkpad = gst_pad_new_from_static_template (sink_tmpl, "sink");
|
||||||
g_assert (h->sinkpad);
|
g_assert (h->sinkpad);
|
||||||
|
@ -668,6 +658,13 @@ gst_harness_new_empty (void)
|
||||||
priv->drop_buffers = FALSE;
|
priv->drop_buffers = FALSE;
|
||||||
priv->testclock = GST_TEST_CLOCK_CAST (gst_test_clock_new ());
|
priv->testclock = GST_TEST_CLOCK_CAST (gst_test_clock_new ());
|
||||||
|
|
||||||
|
priv->buffer_queue = g_async_queue_new_full (
|
||||||
|
(GDestroyNotify) gst_buffer_unref);
|
||||||
|
priv->src_event_queue = g_async_queue_new_full (
|
||||||
|
(GDestroyNotify) gst_event_unref);
|
||||||
|
priv->sink_event_queue = g_async_queue_new_full (
|
||||||
|
(GDestroyNotify) gst_event_unref);
|
||||||
|
|
||||||
priv->propose_allocator = NULL;
|
priv->propose_allocator = NULL;
|
||||||
gst_allocation_params_init (&priv->propose_allocation_params);
|
gst_allocation_params_init (&priv->propose_allocation_params);
|
||||||
|
|
||||||
|
@ -1067,8 +1064,6 @@ gst_harness_teardown (GstHarness * h)
|
||||||
GST_PAD_STREAM_UNLOCK (h->srcpad);
|
GST_PAD_STREAM_UNLOCK (h->srcpad);
|
||||||
|
|
||||||
gst_object_unref (h->srcpad);
|
gst_object_unref (h->srcpad);
|
||||||
|
|
||||||
g_async_queue_unref (priv->src_event_queue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (h->sinkpad) {
|
if (h->sinkpad) {
|
||||||
|
@ -1087,9 +1082,6 @@ gst_harness_teardown (GstHarness * h)
|
||||||
GST_PAD_STREAM_UNLOCK (h->sinkpad);
|
GST_PAD_STREAM_UNLOCK (h->sinkpad);
|
||||||
|
|
||||||
gst_object_unref (h->sinkpad);
|
gst_object_unref (h->sinkpad);
|
||||||
|
|
||||||
g_async_queue_unref (priv->buffer_queue);
|
|
||||||
g_async_queue_unref (priv->sink_event_queue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_object_replace ((GstObject **) & priv->propose_allocator, NULL);
|
gst_object_replace ((GstObject **) & priv->propose_allocator, NULL);
|
||||||
|
@ -1114,6 +1106,10 @@ gst_harness_teardown (GstHarness * h)
|
||||||
g_mutex_clear (&priv->blocking_push_mutex);
|
g_mutex_clear (&priv->blocking_push_mutex);
|
||||||
g_mutex_clear (&priv->priv_mutex);
|
g_mutex_clear (&priv->priv_mutex);
|
||||||
|
|
||||||
|
g_async_queue_unref (priv->buffer_queue);
|
||||||
|
g_async_queue_unref (priv->src_event_queue);
|
||||||
|
g_async_queue_unref (priv->sink_event_queue);
|
||||||
|
|
||||||
g_ptr_array_unref (priv->stress);
|
g_ptr_array_unref (priv->stress);
|
||||||
|
|
||||||
gst_object_unref (h->element);
|
gst_object_unref (h->element);
|
||||||
|
|
Loading…
Reference in a new issue