Merge "Fix race condition between lockNow() and updateLockscreenTimeout" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7e742dca13
@@ -618,6 +618,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
|
|
||||||
private int mPowerButtonSuppressionDelayMillis = POWER_BUTTON_SUPPRESSION_DELAY_DEFAULT_MILLIS;
|
private int mPowerButtonSuppressionDelayMillis = POWER_BUTTON_SUPPRESSION_DELAY_DEFAULT_MILLIS;
|
||||||
|
|
||||||
|
private boolean mLockNowPending = false;
|
||||||
|
|
||||||
private static final int MSG_DISPATCH_MEDIA_KEY_WITH_WAKE_LOCK = 3;
|
private static final int MSG_DISPATCH_MEDIA_KEY_WITH_WAKE_LOCK = 3;
|
||||||
private static final int MSG_DISPATCH_MEDIA_KEY_REPEAT_WITH_WAKE_LOCK = 4;
|
private static final int MSG_DISPATCH_MEDIA_KEY_REPEAT_WITH_WAKE_LOCK = 4;
|
||||||
private static final int MSG_KEYGUARD_DRAWN_COMPLETE = 5;
|
private static final int MSG_KEYGUARD_DRAWN_COMPLETE = 5;
|
||||||
@@ -4988,6 +4990,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
mKeyguardDelegate.doKeyguardTimeout(options);
|
mKeyguardDelegate.doKeyguardTimeout(options);
|
||||||
}
|
}
|
||||||
mLockScreenTimerActive = false;
|
mLockScreenTimerActive = false;
|
||||||
|
mLockNowPending = false;
|
||||||
options = null;
|
options = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4997,7 +5000,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ScreenLockTimeout mScreenLockTimeout = new ScreenLockTimeout();
|
final ScreenLockTimeout mScreenLockTimeout = new ScreenLockTimeout();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void lockNow(Bundle options) {
|
public void lockNow(Bundle options) {
|
||||||
@@ -5009,6 +5012,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
mScreenLockTimeout.setLockOptions(options);
|
mScreenLockTimeout.setLockOptions(options);
|
||||||
}
|
}
|
||||||
mHandler.post(mScreenLockTimeout);
|
mHandler.post(mScreenLockTimeout);
|
||||||
|
synchronized (mScreenLockTimeout) {
|
||||||
|
mLockNowPending = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO (b/113840485): Move this logic to DisplayPolicy when lockscreen supports multi-display.
|
// TODO (b/113840485): Move this logic to DisplayPolicy when lockscreen supports multi-display.
|
||||||
@@ -5024,6 +5030,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
|
|
||||||
private void updateLockScreenTimeout() {
|
private void updateLockScreenTimeout() {
|
||||||
synchronized (mScreenLockTimeout) {
|
synchronized (mScreenLockTimeout) {
|
||||||
|
if (mLockNowPending) {
|
||||||
|
Log.w(TAG, "lockNow pending, ignore updating lockscreen timeout");
|
||||||
|
return;
|
||||||
|
}
|
||||||
final boolean enable = !mAllowLockscreenWhenOnDisplays.isEmpty()
|
final boolean enable = !mAllowLockscreenWhenOnDisplays.isEmpty()
|
||||||
&& mDefaultDisplayPolicy.isAwake()
|
&& mDefaultDisplayPolicy.isAwake()
|
||||||
&& mKeyguardDelegate != null && mKeyguardDelegate.isSecure(mCurrentUserId);
|
&& mKeyguardDelegate != null && mKeyguardDelegate.isSecure(mCurrentUserId);
|
||||||
|
|||||||
Reference in New Issue
Block a user