properly detect whether we are in "fullscreen" (i.e. immersive) on Android

This commit is contained in:
fysx
2015-02-19 00:15:31 +01:00
parent 168357e1ad
commit c30e788393
4 changed files with 34 additions and 4 deletions
+18
View File
@@ -49,6 +49,24 @@ void setImmersive (bool immersive_active) {
env->DeleteLocalRef (clazz);
}
bool getImmersive () {
JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv();
jobject activity = (jobject) SDL_AndroidGetActivity();
jclass clazz (env->GetObjectClass(activity));
jmethodID method_id = env->GetMethodID (clazz, "getImmersiveMode", "()Z");
jboolean immersive_active = env->CallBooleanMethod (activity, method_id);
env->DeleteLocalRef (activity);
env->DeleteLocalRef (clazz);
if (immersive_active)
return true;
return false;
}
double getScreenScale()
{
static double result = -1.;
+4
View File
@@ -32,7 +32,11 @@ namespace love
namespace android
{
/**
* Enables or disables immersive mode where the navigation bar is hidden.
**/
void setImmersive (bool immersive_active);
bool getImmersive ();
/**
* Gets the scale factor of the window's screen, e.g. on Retina displays this
+8 -4
View File
@@ -442,6 +442,10 @@ void Window::updateSettings(const WindowSettings &newsettings)
curMode.settings.fstype = newsettings.fstype;
}
#ifdef LOVE_ANDROID
curMode.settings.fullscreen = love::android::getImmersive();
#endif
// The min width/height is set to 0 internally in SDL when in fullscreen.
if (curMode.settings.fullscreen)
{
@@ -518,6 +522,10 @@ bool Window::setFullscreen(bool fullscreen, Window::FullscreenType fstype)
}
}
#ifdef LOVE_ANDROID
love::android::setImmersive(fullscreen);
#endif
if (SDL_SetWindowFullscreen(window, sdlflags) == 0)
{
SDL_GL_MakeCurrent(window, context);
@@ -535,10 +543,6 @@ bool Window::setFullscreen(bool fullscreen, Window::FullscreenType fstype)
SDL_GL_GetDrawableSize(window, &width, &height);
#endif
#ifdef LOVE_ANDROID
love::android::setImmersive(fullscreen);
#endif
gfx->setViewportSize(width, height);
}
+4
View File
@@ -143,6 +143,10 @@ public class GameActivity extends SDLActivity {
};
}
public boolean getImmersiveMode () {
return immersiveActive;
}
public static String getGamePath() {
Log.d ("GameActivity", "called getGamePath(), game path = " + gamePath);
return gamePath;