diff --git a/src/modules/window/sdl/Window.cpp b/src/modules/window/sdl/Window.cpp index 2b1d635b5..159c83550 100644 --- a/src/modules/window/sdl/Window.cpp +++ b/src/modules/window/sdl/Window.cpp @@ -440,8 +440,16 @@ bool Window::setWindow(int width, int height, WindowSettings *settings) Uint32 sdlflags = SDL_WINDOW_OPENGL; - // On Android we always must have fullscreen type FULLSCREEN_TYPE_DESKTOP + // On Android, disable fullscreen first on window creation so it's + // possible to change the orientation by specifying portait width and + // height, otherwise SDL will pick the current orientation dimensions when + // fullscreen flag is set. Don't worry, we'll set it back later when user + // also requested fullscreen after the window is created. + // See https://github.com/love2d/love-android/issues/196 #ifdef LOVE_ANDROID + bool fullscreen = f.fullscreen; + + f.fullscreen = false; f.fstype = FULLSCREEN_DESKTOP; #endif @@ -527,8 +535,11 @@ bool Window::setWindow(int width, int height, WindowSettings *settings) graphics->setMode((int) scaledw, (int) scaledh, pixelWidth, pixelHeight, f.stencil); } + // Set fullscreen when user requested it before. + // See above for explanation. #ifdef LOVE_ANDROID - love::android::setImmersive(f.fullscreen); + setFullscreen(fullscreen); + love::android::setImmersive(fullscreen); #endif return true;