diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 9c24271ff2f7..1434e5e1b759 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -536,6 +536,7 @@ public final class ActivityManagerService extends ActivityManagerNative // default actuion automatically. Important for devices without direct input // devices. private boolean mShowDialogs = true; + private boolean mInVrMode = false; BroadcastQueue mFgBroadcastQueue; BroadcastQueue mBgBroadcastQueue; @@ -2204,7 +2205,15 @@ public final class ActivityManagerService extends ActivityManagerNative } break; case VR_MODE_CHANGE_MSG: { VrManagerInternal vrService = LocalServices.getService(VrManagerInternal.class); - vrService.setVrMode(msg.arg1 != 0); + final boolean vrMode = msg.arg1 != 0; + vrService.setVrMode(vrMode); + + if (mInVrMode != vrMode) { + synchronized (ActivityManagerService.this) { + mInVrMode = vrMode; + mShowDialogs = shouldShowDialogs(mConfiguration, mInVrMode); + } + } } break; } } @@ -18439,7 +18448,7 @@ public final class ActivityManagerService extends ActivityManagerNative // TODO: If our config changes, should we auto dismiss any currently // showing dialogs? - mShowDialogs = shouldShowDialogs(newConfig); + mShowDialogs = shouldShowDialogs(newConfig, mInVrMode); AttributeCache ac = AttributeCache.instance(); if (ac != null) { @@ -18528,13 +18537,13 @@ public final class ActivityManagerService extends ActivityManagerNative * A thought: SystemUI might also want to get told about this, the Power * dialog / global actions also might want different behaviors. */ - private static final boolean shouldShowDialogs(Configuration config) { + private static final boolean shouldShowDialogs(Configuration config, boolean inVrMode) { final boolean inputMethodExists = !(config.keyboard == Configuration.KEYBOARD_NOKEYS && config.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH && config.navigation == Configuration.NAVIGATION_NONAV); final boolean uiIsNotCarType = !((config.uiMode & Configuration.UI_MODE_TYPE_MASK) == Configuration.UI_MODE_TYPE_CAR); - return inputMethodExists && uiIsNotCarType; + return inputMethodExists && uiIsNotCarType && !inVrMode; } @Override |