From: Alaa Ali <alaanourali@xxxxxxxxx> The SDL GUI in the scanout function can appear unresponsive to the operating system, as it lacks an event handler. This patch adds a new function, handle_sdl_events(), which processes SDL events to ensure the window can respond to close requests. This addresses issues where Linux might think the SDL window is unresponsive, allowing it to handle SDL_QUIT events properly and initiate shutdown. Signed-off-by: Alaa Ali <alaanourali@xxxxxxxxx> --- arch/sandbox/os/sdl.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/sandbox/os/sdl.c b/arch/sandbox/os/sdl.c index 13178abfc0..0fc281b7b8 100644 --- a/arch/sandbox/os/sdl.c +++ b/arch/sandbox/os/sdl.c @@ -13,6 +13,15 @@ static void sdl_perror(const char *what) printf("SDL: Could not %s: %s.\n", what, SDL_GetError()); } +static void handle_sdl_events(void) +{ + SDL_Event event; + while (SDL_PollEvent(&event)) { + if (event.type == SDL_QUIT) + SDL_AtomicSet(&shutdown, true); + } +} + static struct sdl_fb_info info; static SDL_atomic_t shutdown; SDL_Window *window; @@ -47,6 +56,7 @@ static int scanout(void *ptr) while (!SDL_AtomicGet(&shutdown)) { SDL_Delay(100); + handle_sdl_events(); /* Handle events like window close */ SDL_UpdateTexture(texture, NULL, buf, surface->pitch); SDL_RenderClear(renderer); SDL_RenderCopy(renderer, texture, NULL, NULL); -- 2.43.0