From 7f261d3b7667978ced93a4fdc6aec2380df3d87f Mon Sep 17 00:00:00 2001 From: Ethan Lee Date: Tue, 15 Jun 2021 00:35:13 -0400 Subject: [PATCH] wayland: Fix returning to a window from fullscreen without calling SetWindowSize --- src/video/wayland/SDL_waylandwindow.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index 35ee3a207..cf65a5063 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -61,10 +61,10 @@ CommitMinMaxDimensions(SDL_Window *window) max_width = window->max_w; max_height = window->max_h; } else { - min_width = window->w; - min_height = window->h; - max_width = window->w; - max_height = window->h; + min_width = window->windowed.w; + min_height = window->windowed.h; + max_width = window->windowed.w; + max_height = window->windowed.h; } if (data->shell.xdg) { @@ -1002,6 +1002,20 @@ Wayland_SetWindowFullscreen(_THIS, SDL_Window * window, { struct wl_output *output = ((SDL_WaylandOutputData*) _display->driverdata)->output; SetFullscreen(window, fullscreen ? output : NULL); + + /* The window may have been resized to the output size, so reset this when + * returning to a window + */ + if (!fullscreen) { + SDL_WindowData *wind = (SDL_WindowData*) window->driverdata; + wind->resize.width = window->windowed.w; + wind->resize.height = window->windowed.h; + wind->resize.pending = SDL_TRUE; + + if (!(window->flags & SDL_WINDOW_OPENGL)) { + Wayland_HandlePendingResize(window); + } + } } void