summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java31
1 files changed, 21 insertions, 10 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 921f3313fb0f..b4dd07bffcfe 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -3097,7 +3097,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
sensorRotation = lastRotation;
}
- int preferredRotation = -1;
+ final int preferredRotation;
if (mHdmiPlugged) {
// Ignore sensor when plugged into HDMI.
preferredRotation = mHdmiRotation;
@@ -3146,28 +3146,39 @@ public class PhoneWindowManager implements WindowManagerPolicy {
} else if (mUserRotationMode == WindowManagerPolicy.USER_ROTATION_LOCKED) {
// Apply rotation lock.
preferredRotation = mUserRotation;
+ } else {
+ // No overriding preference.
+ // We will do exactly what the application asked us to do.
+ preferredRotation = -1;
}
- // TODO: Sometimes, we might want to override the application-requested
- // orientation, such as when HDMI is plugged in or when docked.
- // We can do that by modifying the appropriate cases above to return
- // the preferred orientation directly instead of continuing on down here.
-
switch (orientation) {
case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
- // Always return portrait if orientation set to portrait.
+ // Return portrait unless overridden.
+ if (isAnyPortrait(preferredRotation)) {
+ return preferredRotation;
+ }
return mPortraitRotation;
case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
- // Always return landscape if orientation set to landscape.
+ // Return landscape unless overridden.
+ if (isLandscapeOrSeascape(preferredRotation)) {
+ return preferredRotation;
+ }
return mLandscapeRotation;
case ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT:
- // Always return portrait if orientation set to portrait.
+ // Return reverse portrait unless overridden.
+ if (isAnyPortrait(preferredRotation)) {
+ return preferredRotation;
+ }
return mUpsideDownRotation;
case ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE:
- // Always return seascape if orientation set to reverse landscape.
+ // Return seascape unless overridden.
+ if (isLandscapeOrSeascape(preferredRotation)) {
+ return preferredRotation;
+ }
return mSeascapeRotation;
case ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE: