Browse Source

Fix SDL not resizing window when Android screen resolution changes

Magnus Bjerke Vik 8 years ago
parent
commit
555e6c9686
1 changed files with 16 additions and 1 deletions
  1. 16 1
      src/video/android/SDL_androidvideo.c

+ 16 - 1
src/video/android/SDL_androidvideo.c

@@ -194,7 +194,6 @@ Android_VideoQuit(_THIS)
     Android_QuitTouch();
 }
 
-/* This function gets called before VideoInit() */
 void
 Android_SetScreenResolution(int width, int height, Uint32 format, float rate)
 {
@@ -203,6 +202,22 @@ Android_SetScreenResolution(int width, int height, Uint32 format, float rate)
     Android_ScreenFormat = format;
     Android_ScreenRate = rate;
 
+    /*
+      Update the resolution of the desktop mode, so that the window
+      can be properly resized. The screen resolution change can for
+      example happen when the Activity enters or exists immersive mode,
+      which can happen after VideoInit().
+    */
+    SDL_VideoDevice* device = SDL_GetVideoDevice();
+    if (device && device->num_displays > 0)
+    {
+        SDL_VideoDisplay* display = &device->displays[0];
+        display->desktop_mode.format = Android_ScreenFormat;
+        display->desktop_mode.w = Android_ScreenWidth;
+        display->desktop_mode.h = Android_ScreenHeight;
+        display->desktop_mode.refresh_rate  = Android_ScreenRate;
+    }
+
     if (Android_Window) {
         SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_RESIZED, width, height);
     }