diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index fd4ccf3708cb55b49e8b3ff08887435b4baef632..3bda913f0e814220ad63ebdeabb137c3c460a23c 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 479104ad5bc6b5217d6f70401d69451f6e882f7f..4378861ead16121b775f9c4edc1aeba4ef578900 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 *