Skip to content

Commit

Permalink
Separate the ScreenSaver base class from the ScreenSaverController.
Browse files Browse the repository at this point in the history
This is a preliminary step to allow multiple screen saver control
methods to be utilized at the same time.

Refs #12438
Refs #12414
  • Loading branch information
stuarta committed May 1, 2015
1 parent 70ae25d commit b1c3c35
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 16 deletions.
2 changes: 1 addition & 1 deletion mythtv/libs/libmythui/mythuihelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ MythUIHelperPrivate::~MythUIHelperPrivate()

void MythUIHelperPrivate::Init(void)
{
screensaver = ScreenSaverControl::get();
screensaver = new ScreenSaverControl();
GetScreenBounds();
StoreGUIsettings();
screenSetup = true;
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythui/screensaver-dbus.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include "screensaver.h"
#include "QDBusConnection"

class ScreenSaverDBus : public ScreenSaverControl
class ScreenSaverDBus : public ScreenSaver
{
public:
ScreenSaverDBus();
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythui/screensaver-null.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

#include "screensaver.h"

class ScreenSaverNull : public ScreenSaverControl
class ScreenSaverNull : public ScreenSaver
{
public:
ScreenSaverNull();
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythui/screensaver-osx.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

#include "screensaver.h"

class ScreenSaverOSX : public ScreenSaverControl
class ScreenSaverOSX : public ScreenSaver
{
public:
ScreenSaverOSX();
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythui/screensaver-x11.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

#include "screensaver.h"

class ScreenSaverX11 : public QObject, public ScreenSaverControl
class ScreenSaverX11 : public QObject, public ScreenSaver
{
Q_OBJECT

Expand Down
25 changes: 21 additions & 4 deletions mythtv/libs/libmythui/screensaver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,12 @@
QEvent::Type ScreenSaverEvent::kEventType =
(QEvent::Type) QEvent::registerEventType();

ScreenSaverControl* ScreenSaverSingleton = NULL;
ScreenSaver* ScreenSaverSingleton = NULL;

ScreenSaverControl* ScreenSaverControl::get(void)
ScreenSaverControl::ScreenSaverControl()
{
if (!ScreenSaverSingleton)
{

#if defined(USING_DBUS)
ScreenSaverSingleton = new ScreenSaverDBus();
#elif defined(USING_X11)
Expand All @@ -34,6 +33,24 @@ ScreenSaverControl* ScreenSaverControl::get(void)
ScreenSaverSingleton = new ScreenSaverNull();
#endif
}
}

ScreenSaverControl::~ScreenSaverControl() {
delete ScreenSaverSingleton;
}

void ScreenSaverControl::Disable(void) {
ScreenSaverSingleton->Disable();
}

void ScreenSaverControl::Restore(void) {
ScreenSaverSingleton->Restore();
}

void ScreenSaverControl::Reset(void) {
ScreenSaverSingleton->Reset();
}

return ScreenSaverSingleton;
bool ScreenSaverControl::Asleep(void) {
return ScreenSaverSingleton->Asleep();
}
24 changes: 17 additions & 7 deletions mythtv/libs/libmythui/screensaver.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,30 @@ class ScreenSaverEvent : public QEvent
ScreenSaverEventKind sset;
};

class ScreenSaverControl
/// Base Class for screensavers
class ScreenSaver
{
public:
// creates one of the concrete subsclasses
static ScreenSaverControl* get(void);

ScreenSaverControl() { };
virtual ~ScreenSaverControl() { };
ScreenSaver() { };
virtual ~ScreenSaver() { };

virtual void Disable(void) = 0;
virtual void Restore(void) = 0;
virtual void Reset(void) = 0;

virtual bool Asleep(void) = 0;
};

/// Controls all instances of the screensaver
class ScreenSaverControl
{
public:
ScreenSaverControl();
~ScreenSaverControl();

void Disable(void);
void Restore(void);
void Reset(void);
bool Asleep(void);
};

#endif // MYTH_SCREENSAVER_H

0 comments on commit b1c3c35

Please sign in to comment.