Commit 7f261d3b7667978ced93a4fdc6aec2380df3d87f

Ethan Lee 2021-06-15T00:35:13

wayland: Fix returning to a window from fullscreen without calling SetWindowSize

diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c
index 35ee3a2..cf65a50 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