OSDN Git Service

Merge "Import translations. DO NOT MERGE" into mnc-dr-dev
authorGeoff Mendal <mendal@google.com>
Wed, 26 Aug 2015 16:18:32 +0000 (16:18 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Wed, 26 Aug 2015 16:18:32 +0000 (16:18 +0000)
services/core/java/com/android/server/policy/WindowOrientationListener.java

index 8b3c036..9916223 100644 (file)
@@ -217,6 +217,8 @@ public abstract class WindowOrientationListener {
      * It is called each time the orientation determination transitions from being
      * uncertain to being certain again, even if it is the same orientation as before.
      *
+     * This should only be called on the Handler thread.
+     *
      * @param rotation The new orientation of the device, one of the Surface.ROTATION_* constants.
      * @see android.view.Surface
      */
@@ -995,9 +997,13 @@ public abstract class WindowOrientationListener {
 
         @Override
         public void onSensorChanged(SensorEvent event) {
+            int newRotation;
             synchronized (mLock) {
                 mDesiredRotation = (int) event.values[0];
-                evaluateRotationChangeLocked();
+                newRotation = evaluateRotationChangeLocked();
+            }
+            if (newRotation >=0) {
+                onProposedRotationChanged(newRotation);
             }
         }
 
@@ -1023,18 +1029,19 @@ public abstract class WindowOrientationListener {
             unscheduleRotationEvaluationLocked();
         }
 
-        public void evaluateRotationChangeLocked() {
+        public int evaluateRotationChangeLocked() {
             unscheduleRotationEvaluationLocked();
             if (mDesiredRotation == mProposedRotation) {
-                return;
+                return -1;
             }
             final long now = SystemClock.elapsedRealtimeNanos();
             if (isDesiredRotationAcceptableLocked(now)) {
                 mProposedRotation = mDesiredRotation;
-                onProposedRotationChanged(mProposedRotation);
+                return mProposedRotation;
             } else {
                 scheduleRotationEvaluationIfNecessaryLocked(now);
             }
+            return -1;
         }
 
         private boolean isDesiredRotationAcceptableLocked(long now) {
@@ -1090,9 +1097,13 @@ public abstract class WindowOrientationListener {
         private Runnable mRotationEvaluator = new Runnable() {
             @Override
             public void run() {
+                int newRotation;
                 synchronized (mLock) {
                     mRotationEvaluationScheduled = false;
-                    evaluateRotationChangeLocked();
+                    newRotation = evaluateRotationChangeLocked();
+                }
+                if (newRotation >= 0) {
+                    onProposedRotationChanged(newRotation);
                 }
             }
         };