Re-schedule screen saver mode when returning to normal.
Fixes http://b/2317620
diff --git a/src/com/android/deskclock/DeskClock.java b/src/com/android/deskclock/DeskClock.java
index 73a7448..3b3ce44 100644
--- a/src/com/android/deskclock/DeskClock.java
+++ b/src/com/android/deskclock/DeskClock.java
@@ -167,8 +167,6 @@
private boolean mLaunchedFromDock = false;
- private int mIdleTimeoutEpoch = 0;
-
private Random mRNG;
private PendingIntent mMidnightIntent;
@@ -207,9 +205,7 @@
} else if (m.what == UPDATE_WEATHER_DISPLAY_MSG) {
updateWeatherDisplay();
} else if (m.what == SCREEN_SAVER_TIMEOUT_MSG) {
- if (m.arg1 == mIdleTimeoutEpoch) {
- saveScreen();
- }
+ saveScreen();
} else if (m.what == SCREEN_SAVER_MOVE_MSG) {
moveScreenSaver();
}
@@ -264,6 +260,14 @@
win.setAttributes(winParams);
}
+ private void scheduleScreenSaver() {
+ // reschedule screen saver
+ mHandy.removeMessages(SCREEN_SAVER_TIMEOUT_MSG);
+ mHandy.sendMessageDelayed(
+ Message.obtain(mHandy, SCREEN_SAVER_TIMEOUT_MSG),
+ SCREEN_SAVER_TIMEOUT);
+ }
+
private void restoreScreen() {
if (!mScreenSaverMode) return;
if (DEBUG) Log.d(LOG_TAG, "restoreScreen");
@@ -272,6 +276,9 @@
doDim(false); // restores previous dim mode
// policy: update weather info when returning from screen saver
if (mPluggedIn) requestWeatherDataFetch();
+
+ scheduleScreenSaver();
+
refreshAll();
}
@@ -592,10 +599,7 @@
setWakeLock(mPluggedIn);
- mIdleTimeoutEpoch++;
- mHandy.sendMessageDelayed(
- Message.obtain(mHandy, SCREEN_SAVER_TIMEOUT_MSG, mIdleTimeoutEpoch, 0),
- SCREEN_SAVER_TIMEOUT);
+ scheduleScreenSaver();
final boolean launchedFromDock
= getIntent().hasCategory(Intent.CATEGORY_DESK_DOCK);
@@ -613,7 +617,9 @@
public void onPause() {
if (DEBUG) Log.d(LOG_TAG, "onPause");
- // Turn off the screen saver. (But don't un-dim.)
+ // Turn off the screen saver and cancel any pending timeouts.
+ // (But don't un-dim.)
+ mHandy.removeMessages(SCREEN_SAVER_TIMEOUT_MSG);
restoreScreen();
// Other things we don't want to be doing in the background.