am 09952195: Merge "Update rotation without holding the WOL lock." into mnc-dr-dev

* commit '09952195f8d9cdb1f6f1f9c793cc392f00dcc5fe':
  Update rotation without holding the WOL lock.
This commit is contained in:
Michael Wright
2015-08-26 13:14:09 +00:00
committed by Android Git Automerger

View 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);
}
}
};