瀏覽代碼

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 3 年之前
父節點
當前提交
9f1a7bb94c
共有 2 個文件被更改,包括 4 次插入1 次删除
  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_Rect bounds;
                 SDL_GetDisplayBounds(displays[i], &bounds);
                 SDL_GetDisplayBounds(displays[i], &bounds);
+
+                window->driverdata->last_displayID = displays[i];
                 SDL_SendWindowEvent(window, SDL_EVENT_WINDOW_MOVED, bounds.x, bounds.y);
                 SDL_SendWindowEvent(window, SDL_EVENT_WINDOW_MOVED, bounds.x, bounds.y);
                 break;
                 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
          * If the window is already positioned on the target output, just update the
          * window geometry.
          * window geometry.
          */
          */
-        if (window->last_displayID != display->id) {
+        if (wind->last_displayID != display->id) {
             wind->fullscreen_was_positioned = SDL_TRUE;
             wind->fullscreen_was_positioned = SDL_TRUE;
             SetFullscreen(window, output);
             SetFullscreen(window, output);
         } else {
         } else {

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

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