From ea3372b0013faa7b49dc8dc3e1320d4129a3a2c0 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 16 Feb 2011 00:11:48 -0800 Subject: [PATCH] Fixed resetting the Direc3D renderer on mode change --- src/video/SDL_sysvideo.h | 1 - src/video/SDL_video.c | 24 ++++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index fd4ccf370..3bda913f0 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -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); diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 479104ad5..4378861ea 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -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 *