[PATCH v4 5/5] video-stream: Don't stop a stream associated with gl_draw (v2)

Frediano Ziglio freddy77 at gmail.com
Thu Feb 29 18:24:14 UTC 2024


Il giorno mer 28 feb 2024 alle ore 08:41 Vivek Kasireddy
<vivek.kasireddy at intel.com> ha scritto:
>
> We do not want to stop a stream associated with gl_draw as a result
> of timeout because we may not get another opportunity to create a
> new stream if the current one gets stopped. However, when the
> stream does get stopped for other reasons, we need to clear the
> gl_draw_stream pointer associated with the relevant DC.
>
> v2: (suggestions from Frediano)
> - Don't stop the stream regardless of whether gl_draw is ongoing
>   or not
>
> Cc: Frediano Ziglio <freddy77 at gmail.com>
> Cc: Gerd Hoffmann <kraxel at redhat.com>
> Cc: Marc-André Lureau <marcandre.lureau at redhat.com>
> Cc: Dongwon Kim <dongwon.kim at intel.com>
> Signed-off-by: Vivek Kasireddy <vivek.kasireddy at intel.com>
> ---
>  server/video-stream.cpp | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/server/video-stream.cpp b/server/video-stream.cpp
> index 5d4e2690..a7233459 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);
> @@ -1016,7 +1020,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);
>          }

Acked

Frediano


More information about the Spice-devel mailing list