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.
This commit is contained in:
Frank Praznik 2023-02-22 11:38:30 -05:00 committed by Sam Lantinga
parent d9fadb8b47
commit 9f1a7bb94c
2 changed files with 4 additions and 1 deletions

View File

@ -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 {

View File

@ -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;