diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index 3b21af7be..2bf500a91 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -725,12 +725,6 @@ void Wayland_ShowWindow(_THIS, SDL_Window *window) SDL_VideoData *c = _this->driverdata; SDL_WindowData *data = window->driverdata; - /* Detach any previous buffers before resetting everything, otherwise when - * calling this a second time you'll get an annoying protocol error - */ - wl_surface_attach(data->surface, NULL, 0, 0); - wl_surface_commit(data->surface); - /* Create the shell surface and map the toplevel */ #ifdef HAVE_LIBDECOR_H if (c->shell.libdecor) { @@ -862,6 +856,10 @@ void Wayland_HideWindow(_THIS, SDL_Window *window) wind->shell_surface.xdg.surface = NULL; } } + + /* Be sure to detach after this is done, otherwise ShowWindow crashes! */ + wl_surface_attach(wind->surface, NULL, 0, 0); + wl_surface_commit(wind->surface); } static void