From d94f46881101ac7c3618c8213cdaacea0ccea34e Mon Sep 17 00:00:00 2001 From: Manuel Martin Date: Tue, 3 Sep 2019 17:34:22 +0200 Subject: [PATCH 1/2] Pause other windows when entering immersive mode --- .../mozilla/vrbrowser/VRBrowserActivity.java | 2 ++ .../mozilla/vrbrowser/ui/widgets/Windows.java | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java index 6f36e8c02..a3c101be4 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java @@ -799,6 +799,7 @@ void pauseGeckoViewCompositor() { return; } mIsPresentingImmersive = true; + mWindows.enterImmersiveMode(); TelemetryWrapper.startImmersive(); PauseCompositorRunnable runnable = new PauseCompositorRunnable(); @@ -821,6 +822,7 @@ void resumeGeckoViewCompositor() { return; } mIsPresentingImmersive = false; + mWindows.exitImmersiveMode(); // Show the window in front of you when you exit immersive mode. resetUIYaw(); diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java index fb60b4705..f685ecf69 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java @@ -395,6 +395,31 @@ public boolean isInPrivateMode() { return mPrivateMode; } + public void enterImmersiveMode() { + for (WindowWidget window: mRegularWindows) { + if (window != mFocusedWindow) { + window.onPause(); + } + } + for (WindowWidget window: mPrivateWindows) { + if (window != mFocusedWindow) { + window.onPause(); + } + } + } + + public void exitImmersiveMode() { + for (WindowWidget window: mRegularWindows) { + if (window != mFocusedWindow) { + window.onResume(); + } + } + for (WindowWidget window: mPrivateWindows) { + if (window != mFocusedWindow) { + window.onResume(); + } + } + } public void enterPrivateMode() { if (mPrivateMode) { From 30a6f422d26bd0dda3026f8f1ac80ca13ef645e2 Mon Sep 17 00:00:00 2001 From: Manuel Martin Date: Wed, 4 Sep 2019 11:29:23 +0200 Subject: [PATCH 2/2] Improve pause/resume state handling --- .../mozilla/vrbrowser/ui/widgets/Windows.java | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java index f685ecf69..55e6d1f89 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java @@ -70,6 +70,7 @@ class WindowsState { private WindowPlacement mPrevWindowPlacement; private boolean mStoredCurvedMode = false; private boolean mForcedCurvedMode = false; + private boolean mIsPaused = false; public enum WindowPlacement{ FRONT(0), @@ -363,6 +364,8 @@ public void resumeCompositor() { } public void onPause() { + mIsPaused = true; + saveState(); for (WindowWidget window: mRegularWindows) { window.onPause(); @@ -373,6 +376,8 @@ public void onPause() { } public void onResume() { + mIsPaused = false; + for (WindowWidget window: mRegularWindows) { window.onResume(); } @@ -396,27 +401,39 @@ public boolean isInPrivateMode() { } public void enterImmersiveMode() { - for (WindowWidget window: mRegularWindows) { - if (window != mFocusedWindow) { - window.onPause(); + if (!isInPrivateMode()) { + for (WindowWidget window: mRegularWindows) { + if (window != mFocusedWindow) { + window.onPause(); + } } - } - for (WindowWidget window: mPrivateWindows) { - if (window != mFocusedWindow) { - window.onPause(); + + } else { + for (WindowWidget window: mPrivateWindows) { + if (window != mFocusedWindow) { + window.onPause(); + } } } } public void exitImmersiveMode() { - for (WindowWidget window: mRegularWindows) { - if (window != mFocusedWindow) { - window.onResume(); - } + if (mIsPaused) { + return; } - for (WindowWidget window: mPrivateWindows) { - if (window != mFocusedWindow) { - window.onResume(); + + if (!isInPrivateMode()) { + for (WindowWidget window: mRegularWindows) { + if (window != mFocusedWindow) { + window.onResume(); + } + } + + } else { + for (WindowWidget window: mPrivateWindows) { + if (window != mFocusedWindow) { + window.onResume(); + } } } }