diff --git a/ChangeLog b/ChangeLog index 4397b03fa3..c04ba488bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-01-24 Wim Taymans + + * gst/rtsp/gstrtspsrc.c: (pad_unblocked), (pad_blocked): + Unblock pads after adding the pads to the element so that autopluggers + get a change to link something. Possibly fixes #395688. + 2007-01-24 Wim Taymans * gst/rtp/gstrtpamrdepay.c: diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index 96fd79ee64..b56265cc8a 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -841,6 +841,7 @@ cleanup: static void pad_unblocked (GstPad * pad, gboolean blocked, GstRTSPSrc * src) { + GST_DEBUG_OBJECT (src, "pad %s:%s unblocked", GST_DEBUG_PAD_NAME (pad)); } static void @@ -849,9 +850,6 @@ pad_blocked (GstPad * pad, gboolean blocked, GstRTSPSrc * src) GST_DEBUG_OBJECT (src, "pad %s:%s blocked, activating streams", GST_DEBUG_PAD_NAME (pad)); - gst_pad_set_blocked_async (pad, FALSE, (GstPadBlockCallback) pad_unblocked, - src); - /* activate the streams */ GST_OBJECT_LOCK (src); if (!src->need_activate) @@ -862,12 +860,17 @@ pad_blocked (GstPad * pad, gboolean blocked, GstRTSPSrc * src) gst_rtspsrc_activate_streams (src); +unblock: + /* now unblock and let it stream */ + gst_pad_set_blocked_async (pad, FALSE, (GstPadBlockCallback) pad_unblocked, + src); + return; was_ok: { GST_OBJECT_UNLOCK (src); - return; + goto unblock; } }