mirror of
https://github.com/love2d/love-android.git
synced 2026-08-12 00:20:57 +02:00
properly detect whether we are in "fullscreen" (i.e. immersive) on Android
This commit is contained in:
@@ -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.;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user