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 *