diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index b7804b17ed..16f4d492de 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -2662,11 +2662,6 @@ static bool SDL_ReconfigureWindowInternal(SDL_Window *window, SDL_WindowFlags fl return false; } - // Don't attempt to reconfigure external windows. - if (window->flags & SDL_WINDOW_EXTERNAL) { - return false; - } - // Only attempt to reconfigure if the window has no existing graphics flags. if (window->flags & (SDL_WINDOW_OPENGL | SDL_WINDOW_METAL | SDL_WINDOW_VULKAN)) { return false; diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index 027e090af5..9392dc74a3 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -2654,7 +2654,9 @@ bool Wayland_ReconfigureWindow(SDL_VideoDevice *_this, SDL_Window *window, SDL_W { SDL_WindowData *data = window->internal; - if (data->shell_surface_status == WAYLAND_SHELL_SURFACE_STATUS_SHOWN) { + // Don't try to reconfigure mapped windows, unless they are custom or external. + if (data->shell_surface_status == WAYLAND_SHELL_SURFACE_STATUS_SHOWN && + data->shell_surface_type != WAYLAND_SHELL_SURFACE_TYPE_CUSTOM) { // Window is already mapped; abort. return false; }