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.


Origin commit data
------------------
Commit: 6c8bd66801
Author: Thilo Graf <dbt@novatux.de>
Date: 2015-11-18 (Wed, 18 Nov 2015)
This commit is contained in:
2015-11-18 19:41:16 +01:00
parent 8ccd3b0ae6
commit 68d732057a
2 changed files with 9 additions and 7 deletions

View File

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

View File

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