From 36f79f251b53ecaa06c5ea2e8f3f62e2656c474c Mon Sep 17 00:00:00 2001 From: Michael Scherle Date: Thu, 31 Oct 2024 14:02:44 +0100 Subject: [PATCH] dcc-send: Fix freeze when video stream is stopped during ongoing draw Prevent a freeze that occurs if the video stream is stopped while a gl draw is in progress (e.g., when the client requests a new codec). Ensure proper cleanup of the ongoing gl draw. Signed-off-by: Michael Scherle Acked-by: Frediano Ziglio --- server/dcc-send.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/dcc-send.cpp b/server/dcc-send.cpp index 18bc4da2..1b34e6db 100644 --- a/server/dcc-send.cpp +++ b/server/dcc-send.cpp @@ -2389,6 +2389,10 @@ static void marshall_gl_draw(DisplayChannelClient *dcc, spice_marshall_msg_display_gl_draw(m, &p->draw); } else if (DCC_TO_DC(dcc)->priv->gl_draw_stream) { red_marshall_gl_draw_stream(dcc, m); + } else if (dcc->priv->gl_draw_ongoing) { + auto display = DCC_TO_DC(dcc); + dcc->priv->gl_draw_ongoing = false; + display_channel_gl_draw_done(display); } else { spice_warning("nothing to send to the client"); }