1
0
mirror of git://projects.qi-hardware.com/gmenu2x.git synced 2024-07-07 13:37:38 +03:00

PowerSaver: re-layouted code.

No functional changes.
This commit is contained in:
Maarten ter Huurne 2011-10-23 06:56:01 +02:00
parent e73a8d06ea
commit ae685a9729
2 changed files with 67 additions and 64 deletions

View File

@ -1,21 +1,22 @@
#include "powersaver.h"
#include "debug.h"
#include <errno.h> #include <errno.h>
#include <fcntl.h> #include <fcntl.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include "powersaver.h" PowerSaver *PowerSaver::instance = NULL;
#include "debug.h"
PowerSaver* PowerSaver::instance = NULL; Uint32 screenTimerCallback(Uint32, void *) {
Uint32 screenTimerCallback(Uint32, void *)
{
DEBUG("Disable Backlight Event\n"); DEBUG("Disable Backlight Event\n");
PowerSaver::getInstance()->disableScreen(); PowerSaver::getInstance()->disableScreen();
return 0; return 0;
} }
PowerSaver* PowerSaver::getInstance() { PowerSaver *PowerSaver::getInstance() {
if ( instance == NULL ) { if (instance == NULL) {
instance = new PowerSaver(); instance = new PowerSaver();
} }
return instance; return instance;
@ -25,7 +26,7 @@ bool PowerSaver::isRunning() {
return instance != NULL; return instance != NULL;
} }
PowerSaver::PowerSaver( ) { PowerSaver::PowerSaver() {
SDL_InitSubSystem(SDL_INIT_TIMER); SDL_InitSubSystem(SDL_INIT_TIMER);
setScreenTimeout(0); setScreenTimeout(0);
screenTimer = NULL; screenTimer = NULL;
@ -37,40 +38,40 @@ PowerSaver::~PowerSaver() {
instance = NULL; instance = NULL;
} }
void PowerSaver::setScreenTimeout( unsigned int seconds ) { void PowerSaver::setScreenTimeout(unsigned int seconds) {
screenTimeout = seconds; screenTimeout = seconds;
resetScreenTimer(); resetScreenTimer();
} }
void PowerSaver::resetScreenTimer() { void PowerSaver::resetScreenTimer() {
if ( screenTimer != NULL ) { if (screenTimer != NULL) {
SDL_RemoveTimer(screenTimer); SDL_RemoveTimer(screenTimer);
} }
addScreenTimer(); addScreenTimer();
//If display is off, turn on it // If display is off, turn on it.
if ( !screenState ) { if (!screenState) {
enableScreen(); enableScreen();
} }
} }
void PowerSaver::addScreenTimer() { void PowerSaver::addScreenTimer() {
//if timeout is zero, don't set timeout // If timeout is zero, don't set timeout.
if ( screenTimeout == 0 ) { if (screenTimeout == 0) {
screenTimer = NULL; screenTimer = NULL;
return; return;
} }
screenTimer = SDL_AddTimer(screenTimeout*1000, screenTimerCallback,NULL); screenTimer = SDL_AddTimer(screenTimeout * 1000, screenTimerCallback, NULL);
if ( screenTimer == NULL ) { if (screenTimer == NULL) {
ERROR("Could not initialize SDLTimer: %s\n", SDL_GetError()); ERROR("Could not initialize SDLTimer: %s\n", SDL_GetError());
} }
} }
#define SCREEN_BLANK_PATH "/sys/class/graphics/fb0/blank" #define SCREEN_BLANK_PATH "/sys/class/graphics/fb0/blank"
void PowerSaver::setScreenBlanking( bool state ) { void PowerSaver::setScreenBlanking(bool state) {
const char* path = SCREEN_BLANK_PATH; const char *path = SCREEN_BLANK_PATH;
const char* blank = state ? "0" : "1"; const char *blank = state ? "0" : "1";
int fd = open(path, O_RDWR); int fd = open(path, O_RDWR);
if (fd == -1) { if (fd == -1) {
@ -86,14 +87,13 @@ void PowerSaver::setScreenBlanking( bool state ) {
} }
void PowerSaver::enableScreen() { void PowerSaver::enableScreen() {
if ( !screenState ) { if (!screenState) {
setScreenBlanking(true); setScreenBlanking(true);
} }
} }
void PowerSaver::disableScreen() { void PowerSaver::disableScreen() {
if ( screenState ) { if (screenState) {
setScreenBlanking(false); setScreenBlanking(false);
} }
} }

View File

@ -1,26 +1,29 @@
#ifndef POWERSAVER_H #ifndef POWERSAVER_H
#define POWERSAVER_H #define POWERSAVER_H
#include <SDL.h>
class PowerSaver {
public: #include <SDL.h>
static PowerSaver* getInstance();
class PowerSaver {
public:
static PowerSaver *getInstance();
static bool isRunning(); static bool isRunning();
~PowerSaver(); ~PowerSaver();
void addScreenTimer();
void resetScreenTimer(); void resetScreenTimer();
void enableScreen(); void enableScreen();
void disableScreen(); void disableScreen();
void setScreenTimeout( unsigned int seconds ); void setScreenTimeout(unsigned int seconds);
private:
PowerSaver( ); private:
static PowerSaver* instance; PowerSaver();
void addScreenTimer();
void setScreenBlanking(bool state);
static PowerSaver *instance;
bool screenState; bool screenState;
unsigned int screenTimeout; unsigned int screenTimeout;
SDL_TimerID screenTimer; SDL_TimerID screenTimer;
void setScreenBlanking( bool state );
}; };
#endif #endif