Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit f7cc2a5

Browse files
authored
Pause/resume other windows when entering/exiting immersive mode (#1747)
* Pause other windows when entering immersive mode * Improve pause/resume state handling
1 parent 4fdf7f5 commit f7cc2a5

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,7 @@ void pauseGeckoViewCompositor() {
799799
return;
800800
}
801801
mIsPresentingImmersive = true;
802+
mWindows.enterImmersiveMode();
802803
TelemetryWrapper.startImmersive();
803804
PauseCompositorRunnable runnable = new PauseCompositorRunnable();
804805

@@ -821,6 +822,7 @@ void resumeGeckoViewCompositor() {
821822
return;
822823
}
823824
mIsPresentingImmersive = false;
825+
mWindows.exitImmersiveMode();
824826
// Show the window in front of you when you exit immersive mode.
825827
resetUIYaw();
826828

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class WindowsState {
7272
private WindowPlacement mPrivateWindowPlacement;
7373
private boolean mStoredCurvedMode = false;
7474
private boolean mForcedCurvedMode = false;
75+
private boolean mIsPaused = false;
7576

7677
public enum WindowPlacement{
7778
FRONT(0),
@@ -368,6 +369,8 @@ public void resumeCompositor() {
368369
}
369370

370371
public void onPause() {
372+
mIsPaused = true;
373+
371374
saveState();
372375
for (WindowWidget window: mRegularWindows) {
373376
window.onPause();
@@ -378,6 +381,8 @@ public void onPause() {
378381
}
379382

380383
public void onResume() {
384+
mIsPaused = false;
385+
381386
for (WindowWidget window: mRegularWindows) {
382387
window.onResume();
383388
}
@@ -400,6 +405,43 @@ public boolean isInPrivateMode() {
400405
return mPrivateMode;
401406
}
402407

408+
public void enterImmersiveMode() {
409+
if (!isInPrivateMode()) {
410+
for (WindowWidget window: mRegularWindows) {
411+
if (window != mFocusedWindow) {
412+
window.onPause();
413+
}
414+
}
415+
416+
} else {
417+
for (WindowWidget window: mPrivateWindows) {
418+
if (window != mFocusedWindow) {
419+
window.onPause();
420+
}
421+
}
422+
}
423+
}
424+
425+
public void exitImmersiveMode() {
426+
if (mIsPaused) {
427+
return;
428+
}
429+
430+
if (!isInPrivateMode()) {
431+
for (WindowWidget window: mRegularWindows) {
432+
if (window != mFocusedWindow) {
433+
window.onResume();
434+
}
435+
}
436+
437+
} else {
438+
for (WindowWidget window: mPrivateWindows) {
439+
if (window != mFocusedWindow) {
440+
window.onResume();
441+
}
442+
}
443+
}
444+
}
403445

404446
public void enterPrivateMode() {
405447
if (mPrivateMode) {

0 commit comments

Comments
 (0)