mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-04-10 19:15:13 +00:00
Merge pull request #202 from hex007/move-pstimeout
Fixes screensaver not getting triggered
This commit is contained in:
commit
5b5eb87115
|
@ -59,8 +59,10 @@ void SystemScreenSaver::startScreenSaver()
|
||||||
{
|
{
|
||||||
if (!mVideoScreensaver && (Settings::getInstance()->getString("ScreenSaverBehavior") == "random video"))
|
if (!mVideoScreensaver && (Settings::getInstance()->getString("ScreenSaverBehavior") == "random video"))
|
||||||
{
|
{
|
||||||
// Configure to fade out the windows
|
// Configure to fade out the windows, Skip Fading if Instant mode
|
||||||
mState = STATE_FADE_OUT_WINDOW;
|
mState = PowerSaver::getMode() == PowerSaver::INSTANT
|
||||||
|
? STATE_SCREENSAVER_ACTIVE
|
||||||
|
: STATE_FADE_OUT_WINDOW;
|
||||||
mOpacity = 0.0f;
|
mOpacity = 0.0f;
|
||||||
|
|
||||||
// Load a random video
|
// Load a random video
|
||||||
|
|
|
@ -15,7 +15,7 @@ GuiGameScraper::GuiGameScraper(Window* window, ScraperSearchParams params, std::
|
||||||
mSearchParams(params),
|
mSearchParams(params),
|
||||||
mClose(false)
|
mClose(false)
|
||||||
{
|
{
|
||||||
PowerSaver::setState(false);
|
PowerSaver::pause();
|
||||||
addChild(&mBox);
|
addChild(&mBox);
|
||||||
addChild(&mGrid);
|
addChild(&mGrid);
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ bool GuiGameScraper::input(InputConfig* config, Input input)
|
||||||
{
|
{
|
||||||
if(config->isMappedTo("b", input) && input.value)
|
if(config->isMappedTo("b", input) && input.value)
|
||||||
{
|
{
|
||||||
PowerSaver::setState(true);
|
PowerSaver::resume();
|
||||||
delete this;
|
delete this;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,10 +19,10 @@ GuiScraperMulti::GuiScraperMulti(Window* window, const std::queue<ScraperSearchP
|
||||||
{
|
{
|
||||||
assert(mSearchQueue.size());
|
assert(mSearchQueue.size());
|
||||||
|
|
||||||
PowerSaver::setState(false);
|
|
||||||
addChild(&mBackground);
|
addChild(&mBackground);
|
||||||
addChild(&mGrid);
|
addChild(&mGrid);
|
||||||
|
|
||||||
|
PowerSaver::pause();
|
||||||
mIsProcessing = true;
|
mIsProcessing = true;
|
||||||
|
|
||||||
mTotalGames = mSearchQueue.size();
|
mTotalGames = mSearchQueue.size();
|
||||||
|
@ -95,7 +95,6 @@ void GuiScraperMulti::doNextSearch()
|
||||||
{
|
{
|
||||||
if(mSearchQueue.empty())
|
if(mSearchQueue.empty())
|
||||||
{
|
{
|
||||||
PowerSaver::setState(true);
|
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -150,6 +149,7 @@ void GuiScraperMulti::finish()
|
||||||
"OK", [&] { delete this; }));
|
"OK", [&] { delete this; }));
|
||||||
|
|
||||||
mIsProcessing = false;
|
mIsProcessing = false;
|
||||||
|
PowerSaver::resume();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<HelpPrompt> GuiScraperMulti::getHelpPrompts()
|
std::vector<HelpPrompt> GuiScraperMulti::getHelpPrompts()
|
||||||
|
|
|
@ -335,7 +335,7 @@ int main(int argc, char* argv[])
|
||||||
}
|
}
|
||||||
} while(SDL_PollEvent(&event));
|
} while(SDL_PollEvent(&event));
|
||||||
|
|
||||||
// triggered if exiting from SDL_WaitEvent
|
// triggered if exiting from SDL_WaitEvent due to event
|
||||||
if (ps_standby)
|
if (ps_standby)
|
||||||
// show as if continuing from last event
|
// show as if continuing from last event
|
||||||
lastTime = SDL_GetTicks();
|
lastTime = SDL_GetTicks();
|
||||||
|
@ -343,6 +343,12 @@ int main(int argc, char* argv[])
|
||||||
// reset counter
|
// reset counter
|
||||||
ps_time = SDL_GetTicks();
|
ps_time = SDL_GetTicks();
|
||||||
}
|
}
|
||||||
|
else if (ps_standby)
|
||||||
|
{
|
||||||
|
// If exitting SDL_WaitEventTimeout due to timeout. Trail considering
|
||||||
|
// timeout as an event
|
||||||
|
ps_time = SDL_GetTicks();
|
||||||
|
}
|
||||||
|
|
||||||
if(window.isSleeping())
|
if(window.isSleeping())
|
||||||
{
|
{
|
||||||
|
@ -355,8 +361,8 @@ int main(int argc, char* argv[])
|
||||||
int deltaTime = curTime - lastTime;
|
int deltaTime = curTime - lastTime;
|
||||||
lastTime = curTime;
|
lastTime = curTime;
|
||||||
|
|
||||||
// cap deltaTime
|
// cap deltaTime if it ever goes negative
|
||||||
if((deltaTime > PowerSaver::getTimeout() && PowerSaver::getTimeout() > 0) || deltaTime < 0)
|
if(deltaTime < 0)
|
||||||
deltaTime = 1000;
|
deltaTime = 1000;
|
||||||
|
|
||||||
window.update(deltaTime);
|
window.update(deltaTime);
|
||||||
|
|
|
@ -12,20 +12,20 @@ PowerSaver::mode PowerSaver::mMode = PowerSaver::DISABLED;
|
||||||
void PowerSaver::init()
|
void PowerSaver::init()
|
||||||
{
|
{
|
||||||
setState(true);
|
setState(true);
|
||||||
updateTimeouts();
|
|
||||||
updateMode();
|
updateMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
int PowerSaver::getTimeout()
|
int PowerSaver::getTimeout()
|
||||||
{
|
{
|
||||||
|
// Used only for SDL_WaitEventTimeout. Use `getMode()` for modes.
|
||||||
return mRunningScreenSaver ? mPlayNextTimeout : mScreenSaverTimeout;
|
return mRunningScreenSaver ? mPlayNextTimeout : mScreenSaverTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PowerSaver::updateTimeouts()
|
void PowerSaver::updateTimeouts()
|
||||||
{
|
{
|
||||||
mScreenSaverTimeout = (unsigned int) Settings::getInstance()->getInt("ScreenSaverTime");
|
mScreenSaverTimeout = (unsigned int) Settings::getInstance()->getInt("ScreenSaverTime");
|
||||||
mScreenSaverTimeout = mScreenSaverTimeout > 0 ? mScreenSaverTimeout - 100 : -1;
|
mScreenSaverTimeout = mScreenSaverTimeout > 0 ? mScreenSaverTimeout - getMode() : -1;
|
||||||
mPlayNextTimeout = 30000;
|
mPlayNextTimeout = 30000 - getMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
PowerSaver::mode PowerSaver::getMode()
|
PowerSaver::mode PowerSaver::getMode()
|
||||||
|
@ -46,6 +46,7 @@ void PowerSaver::updateMode()
|
||||||
} else {
|
} else {
|
||||||
mMode = DEFAULT;
|
mMode = DEFAULT;
|
||||||
}
|
}
|
||||||
|
updateTimeouts();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PowerSaver::getState()
|
bool PowerSaver::getState()
|
||||||
|
@ -63,3 +64,8 @@ void PowerSaver::runningScreenSaver(bool state)
|
||||||
{
|
{
|
||||||
mRunningScreenSaver = state;
|
mRunningScreenSaver = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PowerSaver::isScreenSaverActive()
|
||||||
|
{
|
||||||
|
return mRunningScreenSaver;
|
||||||
|
}
|
||||||
|
|
|
@ -3,18 +3,32 @@ class PowerSaver
|
||||||
public:
|
public:
|
||||||
enum mode : int { DISABLED = -1, INSTANT = 200, ENHANCED = 3000, DEFAULT = 10000 };
|
enum mode : int { DISABLED = -1, INSTANT = 200, ENHANCED = 3000, DEFAULT = 10000 };
|
||||||
|
|
||||||
|
// Call when you want PS to reload all state and settings
|
||||||
static void init();
|
static void init();
|
||||||
|
|
||||||
|
// Get timeout to wake up from for the next event
|
||||||
static int getTimeout();
|
static int getTimeout();
|
||||||
|
// Update currently set timeouts after User changes Timeout settings
|
||||||
static void updateTimeouts();
|
static void updateTimeouts();
|
||||||
|
|
||||||
|
// Use this to check which mode you are in or get the mode timeout
|
||||||
static mode getMode();
|
static mode getMode();
|
||||||
|
// Called when user changes mode from Settings
|
||||||
static void updateMode();
|
static void updateMode();
|
||||||
|
|
||||||
|
// Get current state of PS. Not to be confused with Mode
|
||||||
static bool getState();
|
static bool getState();
|
||||||
|
// State is used to temporarily pause and resume PS
|
||||||
static void setState(bool state);
|
static void setState(bool state);
|
||||||
|
|
||||||
|
// Paired calls when you want to pause PS briefly till you finish animating
|
||||||
|
// or processing over cycles
|
||||||
|
static void pause() { setState(false); }
|
||||||
|
static void resume() { setState(true); }
|
||||||
|
|
||||||
|
// This is used by ScreenSaver to let PS know when to switch to SS timeouts
|
||||||
static void runningScreenSaver(bool state);
|
static void runningScreenSaver(bool state);
|
||||||
|
static bool isScreenSaverActive();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static bool mState;
|
static bool mState;
|
||||||
|
|
|
@ -82,7 +82,7 @@ void Settings::setDefaults()
|
||||||
mBoolMap["ScreenSaverControls"] = true;
|
mBoolMap["ScreenSaverControls"] = true;
|
||||||
mStringMap["ScreenSaverGameInfo"] = "never";
|
mStringMap["ScreenSaverGameInfo"] = "never";
|
||||||
mBoolMap["StretchVideoOnScreenSaver"] = false;
|
mBoolMap["StretchVideoOnScreenSaver"] = false;
|
||||||
mStringMap["PowerSaverMode"] = "default";
|
mStringMap["PowerSaverMode"] = "disabled";
|
||||||
|
|
||||||
// This setting only applies to raspberry pi but set it for all platforms so
|
// This setting only applies to raspberry pi but set it for all platforms so
|
||||||
// we don't get a warning if we encounter it on a different platform
|
// we don't get a warning if we encounter it on a different platform
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include "ThemeData.h"
|
#include "ThemeData.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include "Window.h"
|
#include "Window.h"
|
||||||
|
#include "PowerSaver.h"
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#include <codecvt>
|
#include <codecvt>
|
||||||
#endif
|
#endif
|
||||||
|
@ -264,7 +265,7 @@ void VideoComponent::startVideoWithDelay()
|
||||||
// Set the video that we are going to be playing so we don't attempt to restart it
|
// Set the video that we are going to be playing so we don't attempt to restart it
|
||||||
mPlayingVideoPath = mVideoPath;
|
mPlayingVideoPath = mVideoPath;
|
||||||
|
|
||||||
if (mConfig.startDelay == 0)
|
if (mConfig.startDelay == 0 || PowerSaver::getMode() == PowerSaver::INSTANT)
|
||||||
{
|
{
|
||||||
// No delay. Just start the video
|
// No delay. Just start the video
|
||||||
mStartDelayed = false;
|
mStartDelayed = false;
|
||||||
|
|
|
@ -330,7 +330,7 @@ void VideoVlcComponent::startVideo()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
PowerSaver::setState(false);
|
PowerSaver::pause();
|
||||||
setupContext();
|
setupContext();
|
||||||
|
|
||||||
// Setup the media player
|
// Setup the media player
|
||||||
|
@ -361,12 +361,11 @@ void VideoVlcComponent::stopVideo()
|
||||||
// Release the media player so it stops calling back to us
|
// Release the media player so it stops calling back to us
|
||||||
if (mMediaPlayer)
|
if (mMediaPlayer)
|
||||||
{
|
{
|
||||||
PowerSaver::setState(true);
|
|
||||||
libvlc_media_player_stop(mMediaPlayer);
|
libvlc_media_player_stop(mMediaPlayer);
|
||||||
libvlc_media_player_release(mMediaPlayer);
|
libvlc_media_player_release(mMediaPlayer);
|
||||||
libvlc_media_release(mMedia);
|
libvlc_media_release(mMedia);
|
||||||
mMediaPlayer = NULL;
|
mMediaPlayer = NULL;
|
||||||
freeContext();
|
freeContext();
|
||||||
|
PowerSaver::resume();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue