@@ -400,7 +400,8 @@ public void handleMotion(MotionEvent event, InputQueue.FinishedCallback finished
400400
401401 // visual screen saver support
402402 int mScreenSaverTimeout = 0 ;
403- boolean mScreenSaverEnabled = true ;
403+ boolean mScreenSaverEnabledByUser = false ;
404+ boolean mScreenSaverMayRun = true ; // false if a wakelock is held
404405 boolean mPluggedIn ;
405406
406407 // Behavior of ENDCALL Button. (See Settings.System.END_BUTTON_BEHAVIOR.)
@@ -465,9 +466,11 @@ void observe() {
465466 Settings .Secure .DEFAULT_INPUT_METHOD ), false , this );
466467 resolver .registerContentObserver (Settings .System .getUriFor (
467468 "fancy_rotation_anim" ), false , this );
469+ resolver .registerContentObserver (Settings .Secure .getUriFor (
470+ Settings .Secure .SCREENSAVER_ENABLED ), false , this );
468471 if (SEPARATE_TIMEOUT_FOR_SCREEN_SAVER ) {
469472 resolver .registerContentObserver (Settings .Secure .getUriFor (
470- Settings . Secure . DREAM_TIMEOUT ), false , this );
473+ "screensaver_timeout" ), false , this );
471474 } // otherwise SCREEN_OFF_TIMEOUT will do nicely
472475 updateSettings ();
473476 }
@@ -933,9 +936,12 @@ public void updateSettings() {
933936 updateRotation = true ;
934937 }
935938
939+ mScreenSaverEnabledByUser = 0 != Settings .Secure .getInt (resolver ,
940+ Settings .Secure .SCREENSAVER_ENABLED , 1 );
941+
936942 if (SEPARATE_TIMEOUT_FOR_SCREEN_SAVER ) {
937943 mScreenSaverTimeout = Settings .Secure .getInt (resolver ,
938- Settings . Secure . DREAM_TIMEOUT , 0 );
944+ "screensaver_timeout" , 0 );
939945 } else {
940946 mScreenSaverTimeout = Settings .System .getInt (resolver ,
941947 Settings .System .SCREEN_OFF_TIMEOUT , 0 );
@@ -3451,7 +3457,7 @@ public void userActivity() {
34513457
34523458 Runnable mScreenSaverActivator = new Runnable () {
34533459 public void run () {
3454- if (!(mScreenSaverEnabled && mScreenOnEarly )) {
3460+ if (!(mScreenSaverMayRun && mScreenOnEarly )) {
34553461 Log .w (TAG , "mScreenSaverActivator ran, but the screensaver should not be showing. Who's driving this thing?" );
34563462 return ;
34573463 }
@@ -3464,7 +3470,7 @@ public void run() {
34643470
34653471 try {
34663472 String component = Settings .Secure .getString (
3467- mContext .getContentResolver (), Settings .Secure .DREAM_COMPONENT );
3473+ mContext .getContentResolver (), Settings .Secure .SCREENSAVER_COMPONENT );
34683474 if (component == null ) {
34693475 component = mContext .getResources ().getString (R .string .config_defaultDreamComponent );
34703476 }
@@ -3492,13 +3498,13 @@ private void updateScreenSaverTimeoutLocked() {
34923498 if (mScreenSaverActivator == null ) return ;
34933499
34943500 mHandler .removeCallbacks (mScreenSaverActivator );
3495- if (mScreenSaverEnabled && mScreenOnEarly && mScreenSaverTimeout > 0 ) {
3501+ if (mScreenSaverEnabledByUser && mScreenSaverMayRun && mScreenOnEarly && mScreenSaverTimeout > 0 ) {
34963502 if (localLOGV )
34973503 Log .v (TAG , "scheduling screensaver for " + mScreenSaverTimeout + "ms from now" );
34983504 mHandler .postDelayed (mScreenSaverActivator , mScreenSaverTimeout );
34993505 } else {
35003506 if (localLOGV ) {
3501- if (mScreenSaverTimeout == 0 )
3507+ if (! mScreenSaverEnabledByUser || mScreenSaverTimeout == 0 )
35023508 Log .v (TAG , "screen saver disabled by user" );
35033509 else if (!mScreenOnEarly )
35043510 Log .v (TAG , "screen saver disabled while screen off" );
@@ -3714,7 +3720,7 @@ public void screenOnStartedLw() {
37143720 // The window manager has just grabbed a wake lock. This is our cue to disable the screen
37153721 // saver.
37163722 synchronized (mLock ) {
3717- mScreenSaverEnabled = false ;
3723+ mScreenSaverMayRun = false ;
37183724 }
37193725 }
37203726
@@ -3728,7 +3734,7 @@ public void screenOnStoppedLw() {
37283734 synchronized (mLock ) {
37293735 // even if the keyguard is up, now that all the wakelocks have been released, we
37303736 // should re-enable the screen saver
3731- mScreenSaverEnabled = true ;
3737+ mScreenSaverMayRun = true ;
37323738 updateScreenSaverTimeoutLocked ();
37333739 }
37343740 }
0 commit comments