From a6271a23973f912d7cdb4a336d2c777e8fd86b75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 19 Mar 2015 09:19:23 +0100 Subject: [PATCH] nicesrc: Attach the receive callback in READY->PAUSED and detach in PAUSED->READY Receiving data before the element is ready to push them does not seem like the best idea. https://bugs.freedesktop.org/show_bug.cgi?id=89673 --- gst/gstnicesrc.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/gst/gstnicesrc.c b/gst/gstnicesrc.c index 7d1ffa8..7173cd3 100644 --- a/gst/gstnicesrc.c +++ b/gst/gstnicesrc.c @@ -411,20 +411,15 @@ gst_nice_src_change_state (GstElement * element, GstStateChange transition) "Trying to start Nice source without an agent set"); return GST_STATE_CHANGE_FAILURE; } - else - { - nice_agent_attach_recv (src->agent, src->stream_id, src->component_id, - src->mainctx, gst_nice_src_read_callback, (gpointer) src); - } break; - case GST_STATE_CHANGE_READY_TO_NULL: + case GST_STATE_CHANGE_PAUSED_TO_READY: nice_agent_attach_recv (src->agent, src->stream_id, src->component_id, src->mainctx, NULL, NULL); break; case GST_STATE_CHANGE_READY_TO_PAUSED: case GST_STATE_CHANGE_PAUSED_TO_PLAYING: case GST_STATE_CHANGE_PLAYING_TO_PAUSED: - case GST_STATE_CHANGE_PAUSED_TO_READY: + case GST_STATE_CHANGE_READY_TO_NULL: default: break; } @@ -432,6 +427,20 @@ gst_nice_src_change_state (GstElement * element, GstStateChange transition) ret = GST_ELEMENT_CLASS (gst_nice_src_parent_class)->change_state (element, transition); + switch (transition) { + case GST_STATE_CHANGE_READY_TO_PAUSED: + nice_agent_attach_recv (src->agent, src->stream_id, src->component_id, + src->mainctx, gst_nice_src_read_callback, (gpointer) src); + break; + case GST_STATE_CHANGE_NULL_TO_READY: + case GST_STATE_CHANGE_PAUSED_TO_PLAYING: + case GST_STATE_CHANGE_PLAYING_TO_PAUSED: + case GST_STATE_CHANGE_PAUSED_TO_READY: + case GST_STATE_CHANGE_READY_TO_NULL: + default: + break; + } + return ret; } -- 2.1.4