CScreenSaver: add signal/slot handler OnBeforeStart(), try to fix infoclock

In some constelations it is not required to enable infoclock after close
screensaver. So it is possible to cotrol this from other objects.
This commit is contained in:
2015-11-18 19:41:16 +01:00
parent d77b7b2995
commit 6c8bd66801
2 changed files with 9 additions and 7 deletions

View File

@@ -52,7 +52,6 @@ CScreenSaver::CScreenSaver()
m_viewer = new CPictureViewer(); m_viewer = new CPictureViewer();
index = 0; index = 0;
status_mute = CAudioMute::getInstance()->getStatus(); status_mute = CAudioMute::getInstance()->getStatus();
status_clock = InfoClock->getStatus();
} }
CScreenSaver::~CScreenSaver() CScreenSaver::~CScreenSaver()
@@ -77,12 +76,10 @@ CScreenSaver* CScreenSaver::getInstance()
void CScreenSaver::Start() void CScreenSaver::Start()
{ {
OnBeforeStart();
status_mute = CAudioMute::getInstance()->getStatus(); status_mute = CAudioMute::getInstance()->getStatus();
CAudioMute::getInstance()->enableMuteIcon(false); CAudioMute::getInstance()->enableMuteIcon(false);
status_clock = InfoClock->getStatus();
InfoClock->enableInfoClock(false);
m_viewer->SetScaling((CPictureViewer::ScalingMode)g_settings.picviewer_scaling); m_viewer->SetScaling((CPictureViewer::ScalingMode)g_settings.picviewer_scaling);
m_viewer->SetVisible(g_settings.screen_StartX, g_settings.screen_EndX, g_settings.screen_StartY, g_settings.screen_EndY); m_viewer->SetVisible(g_settings.screen_StartX, g_settings.screen_EndX, g_settings.screen_StartY, g_settings.screen_EndY);
@@ -117,8 +114,12 @@ void CScreenSaver::Stop()
thrScreenSaver = 0; thrScreenSaver = 0;
m_frameBuffer->paintBackground(); //clear entire screen m_frameBuffer->paintBackground(); //clear entire screen
InfoClock->enableInfoClock(status_clock);
CAudioMute::getInstance()->enableMuteIcon(status_mute); CAudioMute::getInstance()->enableMuteIcon(status_mute);
if (!OnAfterStop.empty())
OnAfterStop();
else
InfoClock->enableInfoClock();
} }
void* CScreenSaver::ScreenSaverPrg(void* arg) void* CScreenSaver::ScreenSaverPrg(void* arg)

View File

@@ -29,7 +29,7 @@
#include <vector> #include <vector>
#include <string> #include <string>
class CScreenSaver class CScreenSaver : public sigc::trackable
{ {
private: private:
CFrameBuffer *m_frameBuffer; CFrameBuffer *m_frameBuffer;
@@ -40,7 +40,6 @@ class CScreenSaver
unsigned int index; unsigned int index;
bool status_mute; bool status_mute;
bool status_clock;
bool ReadDir(); bool ReadDir();
void PaintPicture(); void PaintPicture();
@@ -52,6 +51,8 @@ class CScreenSaver
void Start(); void Start();
void Stop(); void Stop();
sigc::signal<void> OnBeforeStart;
sigc::signal<void> OnAfterStop;
}; };
#endif // __CSCREENSAVER_H__ #endif // __CSCREENSAVER_H__