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

From 7f261d3b7667978ced93a4fdc6aec2380df3d87f Mon Sep 17 00:00:00 2001
From: Ethan Lee <[EMAIL REDACTED]>
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