mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-03-23 21:55:12 +00:00
Detect display change when fullscreen desktop windows move displays
This happens when using Win+Alt+Left/Right on a resizable fullscreen desktop window on Windows (cherry picked from commit 650e16a8245f3fb5056fc7f6b398fb88244b3477)
This commit is contained in:
parent
817454cfe6
commit
c709741871
|
@ -1198,16 +1198,32 @@ int SDL_GetWindowDisplayIndex(SDL_Window *window)
|
||||||
return displayIndex;
|
return displayIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
displayIndex = GetRectDisplayIndex(window->x, window->y, window->w, window->h);
|
||||||
|
|
||||||
/* Find the display containing the window if fullscreen */
|
/* Find the display containing the window if fullscreen */
|
||||||
for (i = 0; i < _this->num_displays; ++i) {
|
for (i = 0; i < _this->num_displays; ++i) {
|
||||||
SDL_VideoDisplay *display = &_this->displays[i];
|
SDL_VideoDisplay *display = &_this->displays[i];
|
||||||
|
|
||||||
if (display->fullscreen_window == window) {
|
if (display->fullscreen_window == window) {
|
||||||
return i;
|
if (displayIndex != i) {
|
||||||
|
if (displayIndex < 0) {
|
||||||
|
displayIndex = i;
|
||||||
|
} else {
|
||||||
|
SDL_VideoDisplay *new_display = &_this->displays[displayIndex];
|
||||||
|
|
||||||
|
/* The window was moved to a different display */
|
||||||
|
if (new_display->fullscreen_window != NULL) {
|
||||||
|
/* Uh oh, there's already a fullscreen window here */
|
||||||
|
} else {
|
||||||
|
new_display->fullscreen_window = window;
|
||||||
|
}
|
||||||
|
display->fullscreen_window = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return displayIndex;
|
||||||
return GetRectDisplayIndex(window->x, window->y, window->w, window->h);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue