mirror of
https://github.com/yawut/SDL.git
synced 2026-09-08 17:16:19 -05:00
Fixed resetting the Direc3D renderer on mode change
This commit is contained in:
@@ -180,7 +180,6 @@ struct SDL_VideoDevice
|
||||
void (*MaximizeWindow) (_THIS, SDL_Window * window);
|
||||
void (*MinimizeWindow) (_THIS, SDL_Window * window);
|
||||
void (*RestoreWindow) (_THIS, SDL_Window * window);
|
||||
void (*PrepWindowFullscreen) (_THIS, SDL_Window * window);
|
||||
void (*SetWindowFullscreen) (_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen);
|
||||
void (*SetWindowGrab) (_THIS, SDL_Window * window);
|
||||
void (*DestroyWindow) (_THIS, SDL_Window * window);
|
||||
|
||||
@@ -1025,36 +1025,40 @@ SDL_UpdateFullscreenMode(SDL_Window * window)
|
||||
SDL_GetDisplayForWindow(other) == display) {
|
||||
SDL_DisplayMode fullscreen_mode;
|
||||
if (SDL_GetWindowDisplayMode(other, &fullscreen_mode) == 0) {
|
||||
if (_this->PrepWindowFullscreen) {
|
||||
_this->PrepWindowFullscreen(_this, other);
|
||||
SDL_bool resized = SDL_TRUE;
|
||||
|
||||
if (other->w == fullscreen_mode.w && other->h == fullscreen_mode.h) {
|
||||
resized = SDL_FALSE;
|
||||
}
|
||||
|
||||
SDL_SetDisplayModeForDisplay(display, &fullscreen_mode);
|
||||
|
||||
if (_this->SetWindowFullscreen) {
|
||||
_this->SetWindowFullscreen(_this, other, display, SDL_TRUE);
|
||||
}
|
||||
display->fullscreen_window = other;
|
||||
|
||||
/* Generate a mode change events here */
|
||||
SDL_SendWindowEvent(other, SDL_WINDOWEVENT_RESIZED,
|
||||
fullscreen_mode.w, fullscreen_mode.h);
|
||||
/* Generate a mode change event here */
|
||||
if (resized) {
|
||||
SDL_SendWindowEvent(other, SDL_WINDOWEVENT_RESIZED,
|
||||
fullscreen_mode.w, fullscreen_mode.h);
|
||||
} else {
|
||||
SDL_OnWindowResized(other);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Nope, restore the desktop mode */
|
||||
if (_this->PrepWindowFullscreen) {
|
||||
_this->PrepWindowFullscreen(_this, window);
|
||||
}
|
||||
|
||||
SDL_SetDisplayModeForDisplay(display, NULL);
|
||||
|
||||
if (_this->SetWindowFullscreen) {
|
||||
_this->SetWindowFullscreen(_this, window, display, SDL_FALSE);
|
||||
}
|
||||
display->fullscreen_window = NULL;
|
||||
|
||||
/* Generate a mode change event here */
|
||||
SDL_OnWindowResized(window);
|
||||
}
|
||||
|
||||
SDL_Window *
|
||||
|
||||
Reference in New Issue
Block a user