diff --git a/server/video-stream.cpp b/server/video-stream.cpp index cdae8a497591afd8a34a934476e3eddab1a3131b..7d0181860d14088e31a56631d5ea96e151dfe974 100644 --- a/server/video-stream.cpp +++ b/server/video-stream.cpp @@ -116,6 +116,10 @@ void video_stream_stop(DisplayChannel *display, VideoStream *stream) } dcc->pipe_add(video_stream_destroy_item_new(stream_agent)); video_stream_agent_stats_print(stream_agent); + + if (stream == display->priv->gl_draw_stream) { + display->priv->gl_draw_stream = nullptr; + } } display->priv->streams_size_total -= stream->width * stream->height; ring_remove(&stream->link); @@ -974,7 +978,8 @@ void video_stream_timeout(DisplayChannel *display) while (item) { VideoStream *stream = SPICE_CONTAINEROF(item, VideoStream, link); item = ring_next(ring, item); - if (now >= (stream->last_time + RED_STREAM_TIMEOUT)) { + if (now >= (stream->last_time + RED_STREAM_TIMEOUT) && + stream != display->priv->gl_draw_stream) { detach_video_stream_gracefully(display, stream, nullptr); video_stream_stop(display, stream); }