client: set the watch to flushing before going to NULL

First set the watch to flushing so that we unblock any current and
future attempt to send data on the watch, Then set the pipeline to
NULL.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728153
This commit is contained in:
Wim Taymans 2014-04-15 16:51:17 +02:00
parent 9219509bcf
commit e69241ac97

View file

@ -819,6 +819,10 @@ handle_teardown_request (GstRTSPClient * client, GstRTSPContext * ctx)
g_signal_emit (client, gst_rtsp_client_signals[SIGNAL_TEARDOWN_REQUEST],
0, ctx);
/* make sure we unblock the backlog and don't accept new messages
* on the watch */
gst_rtsp_watch_set_flushing (priv->watch, TRUE);
/* unlink the all TCP callbacks */
unlink_session_transports (client, session, sessmedia);
@ -827,6 +831,9 @@ handle_teardown_request (GstRTSPClient * client, GstRTSPContext * ctx)
gst_rtsp_session_media_set_state (sessmedia, GST_STATE_NULL);
/* allow messages again so that we can send the reply */
gst_rtsp_watch_set_flushing (priv->watch, FALSE);
/* unmanage the media in the session, returns false if all media session
* are torn down. */
if (!gst_rtsp_session_release_media (session, sessmedia)) {