DO NOT MERGE Fix error caused by quick stopDream(false) + startDream() with same dream
Bug: 62147987 Bug: 28455483 Exempt-From-Owner-Approval: Will not merge to master Change-Id: I4577c66d7d66c22c8b9e2ab0b50a59e97d7e9647
This commit is contained in:
@@ -85,6 +85,7 @@ public final class DreamManagerService extends SystemService {
|
|||||||
private boolean mCurrentDreamCanDoze;
|
private boolean mCurrentDreamCanDoze;
|
||||||
private boolean mCurrentDreamIsDozing;
|
private boolean mCurrentDreamIsDozing;
|
||||||
private boolean mCurrentDreamIsWaking;
|
private boolean mCurrentDreamIsWaking;
|
||||||
|
private Runnable mStopDreamRunnable;
|
||||||
private int mCurrentDreamDozeScreenState = Display.STATE_UNKNOWN;
|
private int mCurrentDreamDozeScreenState = Display.STATE_UNKNOWN;
|
||||||
private int mCurrentDreamDozeScreenBrightness = PowerManager.BRIGHTNESS_DEFAULT;
|
private int mCurrentDreamDozeScreenBrightness = PowerManager.BRIGHTNESS_DEFAULT;
|
||||||
|
|
||||||
@@ -353,6 +354,12 @@ public final class DreamManagerService extends SystemService {
|
|||||||
&& mCurrentDreamCanDoze == canDoze
|
&& mCurrentDreamCanDoze == canDoze
|
||||||
&& mCurrentDreamUserId == userId) {
|
&& mCurrentDreamUserId == userId) {
|
||||||
Slog.i(TAG, "Already in target dream.");
|
Slog.i(TAG, "Already in target dream.");
|
||||||
|
// If dream is waking, cancel the wake.
|
||||||
|
mCurrentDreamIsWaking = false;
|
||||||
|
if (mStopDreamRunnable != null) {
|
||||||
|
mHandler.removeCallbacks(mStopDreamRunnable);
|
||||||
|
mStopDreamRunnable = null;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -385,13 +392,23 @@ public final class DreamManagerService extends SystemService {
|
|||||||
mCurrentDreamIsWaking = true;
|
mCurrentDreamIsWaking = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
mHandler.post(new Runnable() {
|
if (mStopDreamRunnable != null) {
|
||||||
|
mHandler.removeCallbacks(mStopDreamRunnable);
|
||||||
|
mStopDreamRunnable = null;
|
||||||
|
}
|
||||||
|
mStopDreamRunnable = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
synchronized (mLock) {
|
||||||
Slog.i(TAG, "Performing gentle wake from dream.");
|
Slog.i(TAG, "Performing gentle wake from dream.");
|
||||||
mController.stopDream(immediate);
|
mController.stopDream(immediate);
|
||||||
|
if (mStopDreamRunnable == this) {
|
||||||
|
mStopDreamRunnable = null;
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
mHandler.post(mStopDreamRunnable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user