client: raise the backlog limits before pausing
We need to raise the backlog limits before pausing the pipeline or else the appsink might be blocking in the render method in wait_backlog() and we would deadlock waiting for paused. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=736322
This commit is contained in:
parent
ebd9be59fe
commit
23b9d8fbb0
@ -961,6 +961,7 @@ bad_request:
|
||||
static gboolean
|
||||
handle_pause_request (GstRTSPClient * client, GstRTSPContext * ctx)
|
||||
{
|
||||
GstRTSPClientPrivate *priv = client->priv;
|
||||
GstRTSPSession *session;
|
||||
GstRTSPClientClass *klass;
|
||||
GstRTSPSessionMedia *sessmedia;
|
||||
@ -996,6 +997,11 @@ handle_pause_request (GstRTSPClient * client, GstRTSPContext * ctx)
|
||||
rtspstate != GST_RTSP_STATE_RECORDING)
|
||||
goto invalid_state;
|
||||
|
||||
/* No limit on watch queue because else we might be blocking in the appsink
|
||||
* render method and the PAUSE below will hang */
|
||||
if (priv->watch != NULL)
|
||||
gst_rtsp_watch_set_send_backlog (priv->watch, 0, 0);
|
||||
|
||||
/* then pause sending */
|
||||
gst_rtsp_session_media_set_state (sessmedia, GST_STATE_PAUSED);
|
||||
|
||||
@ -1006,6 +1012,9 @@ handle_pause_request (GstRTSPClient * client, GstRTSPContext * ctx)
|
||||
|
||||
send_message (client, ctx, ctx->response, FALSE);
|
||||
|
||||
if (priv->watch != NULL)
|
||||
gst_rtsp_watch_set_send_backlog (priv->watch, 0, WATCH_BACKLOG_SIZE);
|
||||
|
||||
/* the state is now READY */
|
||||
gst_rtsp_session_media_set_rtsp_state (sessmedia, GST_RTSP_STATE_READY);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user