diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index f39036c8e..c63bb1b94 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -1370,7 +1370,10 @@ void Wayland_ShowWindow(_THIS, SDL_Window *window) * Roundtrip required to avoid a possible protocol violation when * HideWindow was called immediately before ShowWindow. */ - WAYLAND_wl_display_roundtrip(c->display); + if (data->needs_roundtrip) { + data->needs_roundtrip = SDL_FALSE; + WAYLAND_wl_display_roundtrip(c->display); + } } static void @@ -1447,6 +1450,7 @@ void Wayland_HideWindow(_THIS, SDL_Window *window) * Roundtrip required to avoid a possible protocol violation when * ShowWindow is called immediately after HideWindow. */ + wind->needs_roundtrip = SDL_TRUE; WAYLAND_wl_display_roundtrip(data->display); } diff --git a/src/video/wayland/SDL_waylandwindow.h b/src/video/wayland/SDL_waylandwindow.h index 703ec53da..d408f14a4 100644 --- a/src/video/wayland/SDL_waylandwindow.h +++ b/src/video/wayland/SDL_waylandwindow.h @@ -107,6 +107,7 @@ typedef struct { SDL_Rect viewport_rect; SDL_bool needs_resize_event; SDL_bool floating_resize_pending; + SDL_bool needs_roundtrip; } SDL_WindowData; extern void Wayland_ShowWindow(_THIS, SDL_Window *window);