diff options
author | Daniel Sandler <dsandler@google.com> | 2011-02-22 16:10:21 -0500 |
---|---|---|
committer | Daniel Sandler <dsandler@google.com> | 2011-02-22 16:10:23 -0500 |
commit | e7e5ac250ca6e682edc850a5148b6c46c4d2e060 (patch) | |
tree | 167921da2a46e1d7cf5a04599030e9cf3471d74f /policy | |
parent | 2ed6ad6aeca5f9829ea7dad4e092064ee4baad47 (diff) | |
download | frameworks_base-e7e5ac250ca6e682edc850a5148b6c46c4d2e060.zip frameworks_base-e7e5ac250ca6e682edc850a5148b6c46c4d2e060.tar.gz frameworks_base-e7e5ac250ca6e682edc850a5148b6c46c4d2e060.tar.bz2 |
Rotation lock fix for sensor{Landscape,Portrait} activities.
E.g. if an app is sensorLandscape and the device rotation is
locked to landscape, the activity should not be allowed to
flip to seascape even if the device is inverted.
If the rotation is locked 90° from the activity's
supported orientations, we must override the lock as before,
but we now suppress the sensor input (confining the activity
to one of its two orientations). This best preserves the
spirit of the rotation lock while still allowing the
activity to run in a supported configuration.
Bug: 3453407
Change-Id: I8ee255e0250ba7e4534f4622ac37b82d31cf9936
Diffstat (limited to 'policy')
-rwxr-xr-x | policy/src/com/android/internal/policy/impl/PhoneWindowManager.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index 8fd0f05..c4ce93b 100755 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -2553,6 +2553,16 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private int getCurrentLandscapeRotation(int lastRotation) { + // if the user has locked rotation, we ignore the sensor + if (mUserRotationMode == WindowManagerPolicy.USER_ROTATION_LOCKED) { + if (isLandscapeOrSeascape(mUserRotation)) { + return mUserRotation; + } else { + // it seems odd to obey the sensor at all if rotation lock is enabled + return mLandscapeRotation; + } + } + int sensorRotation = mOrientationListener.getCurrentRotation(lastRotation); if (isLandscapeOrSeascape(sensorRotation)) { return sensorRotation; @@ -2570,6 +2580,16 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private int getCurrentPortraitRotation(int lastRotation) { + // if the user has locked rotation, we ignore the sensor + if (mUserRotationMode == WindowManagerPolicy.USER_ROTATION_LOCKED) { + if (isAnyPortrait(mUserRotation)) { + return mUserRotation; + } else { + // it seems odd to obey the sensor at all if rotation lock is enabled + return mPortraitRotation; + } + } + int sensorRotation = mOrientationListener.getCurrentRotation(lastRotation); if (isAnyPortrait(sensorRotation)) { return sensorRotation; |