From c8fb1c720cd429970865f27633dd682bed3c5815 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 6 Feb 2013 13:18:18 +0100 Subject: rtspsrc: flush connection when stopping When we stop, we can flush all pending commands so that we can stop and join the task. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=684924 --- gst/rtsp/gstrtspsrc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index 22905e829..c9a5fb6bc 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -285,6 +285,9 @@ static gboolean gst_rtspsrc_push_event (GstRTSPSrc * src, GstEvent * event); #define CMD_RECONNECT (1 << 5) #define CMD_LOOP (1 << 6) +/* mask for all commands */ +#define CMD_ALL ((CMD_LOOP << 1) - 1) + #define GST_ELEMENT_PROGRESS(el, type, code, text) \ G_STMT_START { \ gchar *__txt = _gst_element_error_printf text; \ @@ -6699,7 +6702,7 @@ gst_rtspsrc_stop (GstRTSPSrc * src) GST_DEBUG_OBJECT (src, "stopping"); /* also cancels pending task */ - gst_rtspsrc_loop_send_cmd (src, CMD_WAIT, CMD_CLOSE); + gst_rtspsrc_loop_send_cmd (src, CMD_WAIT, CMD_ALL); GST_OBJECT_LOCK (src); if ((task = src->task)) { -- cgit v1.2.3