summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index fe459c7..5d4159a 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -361,6 +361,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
boolean mScreenOnEarly = false;
boolean mScreenOnFully = false;
boolean mOrientationSensorEnabled = false;
+ int mLastSensorRotation = -1;
int mCurrentAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
boolean mHasSoftInput = false;
@@ -3721,7 +3722,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
synchronized (mLock) {
int sensorRotation = mOrientationListener.getProposedRotation(); // may be -1
if (sensorRotation < 0) {
- sensorRotation = lastRotation;
+ // Sensor is disabled, device probably just turned off.
+ if (mLastSensorRotation >= 0) {
+ sensorRotation = mLastSensorRotation;
+ } else {
+ // Sensor has never been enabled. Last resort is to use lastRotation.
+ sensorRotation = lastRotation;
+ }
+ } else {
+ // Valid sensor data, save it away.
+ mLastSensorRotation = sensorRotation;
}
final int preferredRotation;