Browse Source

wayland: Track the window display ID locally

Track the current window display ID locally so as not to depend on specific behavior of the video layer, which may change the value at times when it isn't expected.
Frank Praznik 2 years ago
parent
commit
9f1a7bb94c
2 changed files with 4 additions and 1 deletions
  1. 3 1
      src/video/wayland/SDL_waylandwindow.c
  2. 1 0
      src/video/wayland/SDL_waylandwindow.h

+ 3 - 1
src/video/wayland/SDL_waylandwindow.c

@@ -958,6 +958,8 @@ static void Wayland_move_window(SDL_Window *window, SDL_DisplayData *driverdata)
                  */
                 SDL_Rect bounds;
                 SDL_GetDisplayBounds(displays[i], &bounds);
+
+                window->driverdata->last_displayID = displays[i];
                 SDL_SendWindowEvent(window, SDL_EVENT_WINDOW_MOVED, bounds.x, bounds.y);
                 break;
             }
@@ -1611,7 +1613,7 @@ void Wayland_SetWindowFullscreen(_THIS, SDL_Window *window,
          * If the window is already positioned on the target output, just update the
          * window geometry.
          */
-        if (window->last_displayID != display->id) {
+        if (wind->last_displayID != display->id) {
             wind->fullscreen_was_positioned = SDL_TRUE;
             SetFullscreen(window, output);
         } else {

+ 1 - 0
src/video/wayland/SDL_waylandwindow.h

@@ -111,6 +111,7 @@ struct SDL_WindowData
     int wl_window_width, wl_window_height;
     int system_min_required_width;
     int system_min_required_height;
+    SDL_DisplayID last_displayID;
     SDL_bool floating;
     SDL_bool is_fullscreen;
     SDL_bool in_fullscreen_transition;