Fix SDL not resizing window when Android screen resolution changes

This commit is contained in:
Magnus Bjerke Vik 2016-10-01 14:18:29 -07:00
parent 0250eb3c4f
commit 555e6c9686
1 changed files with 16 additions and 1 deletions

View File

@ -194,7 +194,6 @@ Android_VideoQuit(_THIS)
Android_QuitTouch(); Android_QuitTouch();
} }
/* This function gets called before VideoInit() */
void void
Android_SetScreenResolution(int width, int height, Uint32 format, float rate) 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_ScreenFormat = format;
Android_ScreenRate = rate; 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) { if (Android_Window) {
SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_RESIZED, width, height); SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_RESIZED, width, height);
} }