Decoupled screensaver and sleep mode: background jobs will only prevent sleep mode but screen saver (dimming) will still be active.

This commit is contained in:
verybadsoldier 2016-09-17 15:21:24 +02:00
parent b1daeafe24
commit 329730cc3e
2 changed files with 17 additions and 7 deletions

View file

@ -203,11 +203,16 @@ void Window::render()
}
unsigned int screensaverTime = (unsigned int)Settings::getInstance()->getInt("ScreenSaverTime");
if(mTimeSinceLastInput >= screensaverTime && screensaverTime != 0 && !isProcessing() && mAllowSleep)
if(mTimeSinceLastInput >= screensaverTime && screensaverTime != 0)
{
// go to sleep
mSleeping = true;
onSleep();
renderScreenSaver();
if (!isProcessing() && mAllowSleep)
{
// go to sleep
mSleeping = true;
onSleep();
}
}
}
@ -327,9 +332,6 @@ void Window::setHelpPrompts(const std::vector<HelpPrompt>& prompts, const HelpSt
void Window::onSleep()
{
Renderer::setMatrix(Eigen::Affine3f::Identity());
unsigned char opacity = Settings::getInstance()->getString("ScreenSaverBehavior") == "dim" ? 0xA0 : 0xFF;
Renderer::drawRect(0, 0, Renderer::getScreenWidth(), Renderer::getScreenHeight(), 0x00000000 | opacity);
}
void Window::onWake()
@ -341,3 +343,10 @@ bool Window::isProcessing()
{
return count_if(mGuiStack.begin(), mGuiStack.end(), [](GuiComponent* c) { return c->isProcessing(); }) > 0;
}
void Window::renderScreenSaver()
{
Renderer::setMatrix(Eigen::Affine3f::Identity());
unsigned char opacity = Settings::getInstance()->getString("ScreenSaverBehavior") == "dim" ? 0xA0 : 0xFF;
Renderer::drawRect(0, 0, Renderer::getScreenWidth(), Renderer::getScreenHeight(), 0x00000000 | opacity);
}

View file

@ -43,6 +43,7 @@ private:
// Returns true if at least one component on the stack is processing
bool isProcessing();
void renderScreenSaver();
HelpComponent* mHelp;
ImageComponent* mBackgroundOverlay;