You may find yourself in a situation where Windows takes longer than your specified screen saver idle timeout to start the screen saver.
First of all, there are ways for programs to block the screen saver entirely. Calling
SetThreadExecutionState(ES_DISPLAY_REQUIRED), is how a program says, “Even though there is no mouse or keyboard input, the screen is indeed in use, so don’t blank it or start the screen saver.” Media playback programs use this so the screen saver doesn’t kick in while you’re watching a movie on your DVD, and presentation programs use it so the screen saver doesn’t start in the middle of your multi-million-dollar proposal.
But even if no program has marked the screen as busy, Windows itself will delay activating the screen saver if it detects that you would prefer that it not run for a while.
If you repeatedly dismiss the screen saver less than one minute after it starts on Windows Vista or later, the operating system says, “Oh, sorry. I thought there was nobody there, but obviously there is. You’re probably reading an information-dense document or using your laptop as a flashlight or clock, and you want the screen to stay on even though you aren’t generating any input. I’ll hold off the screen saver for a little while for you.”
After the second time you do a “fast dismiss” of the screen saver, the screen saver idle time is temporarily incremented by its nominal value. For example, if you set your screen saver timeout to two minutes, then starting with the second fast dismiss, Windows will wait an additional two minutes before trying the screen saver again. Here’s a timeline for people who like timelines:
- At T = 0, you stop generating input.
- At T = 2m, the screen saver starts. You dismiss it immediately.
- At T = 4m, the screen saver starts. You dismiss it immediately. This is your second consecutive fast dismiss, so the screen saver timeout is temporarily increased to 4 minutes.
- At T = 8m, the screen saver starts. You dismiss it immediately. This is your third consecutive fast dismiss, so the screen saver timeout is temporarily increased to 6 minutes.
- At T = 14m, the screen saver starts. You dismiss it immediately. This is your fourth consecutive fast dismiss, so the screen saver timeout is temporarily increased to 8 minutes.
As long as you keep fast-dismissing, the delay will increase. Of course, the delay won’t grow indefinitely, because you’ll eventually hit some other idle timeout, like the system sleep timeout, and then the system will sleep before it gets a chance to run the screen saver.
If this feature offends you, then you can disable it by setting Adaptive Display to off in the Advanced Power Settings. There are also Group Policies for controlling this feature.