mirror of
git://projects.qi-hardware.com/gmenu2x.git
synced 2025-02-18 12:14:44 +02:00
PowerSaver: re-layouted code.
No functional changes.
This commit is contained in:
parent
e73a8d06ea
commit
ae685a9729
@ -1,34 +1,35 @@
|
|||||||
|
#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");
|
||||||
{
|
PowerSaver::getInstance()->disableScreen();
|
||||||
DEBUG("Disable Backlight Event\n");
|
return 0;
|
||||||
PowerSaver::getInstance()->disableScreen();
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PowerSaver* PowerSaver::getInstance() {
|
PowerSaver *PowerSaver::getInstance() {
|
||||||
if ( instance == NULL ) {
|
if (instance == NULL) {
|
||||||
instance = new PowerSaver();
|
instance = new PowerSaver();
|
||||||
}
|
}
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PowerSaver::isRunning() {
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
PowerSaver::~PowerSaver() {
|
PowerSaver::~PowerSaver() {
|
||||||
@ -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) {
|
||||||
@ -82,18 +83,17 @@ void PowerSaver::setScreenBlanking( bool state ) {
|
|||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
screenState = state;
|
screenState = 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,26 +1,29 @@
|
|||||||
#ifndef POWERSAVER_H
|
#ifndef POWERSAVER_H
|
||||||
#define POWERSAVER_H
|
#define POWERSAVER_H
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
class PowerSaver {
|
class PowerSaver {
|
||||||
|
public:
|
||||||
|
static PowerSaver *getInstance();
|
||||||
|
static bool isRunning();
|
||||||
|
~PowerSaver();
|
||||||
|
void resetScreenTimer();
|
||||||
|
|
||||||
public:
|
void enableScreen();
|
||||||
static PowerSaver* getInstance();
|
void disableScreen();
|
||||||
static bool isRunning();
|
|
||||||
~PowerSaver();
|
|
||||||
void addScreenTimer();
|
|
||||||
void resetScreenTimer();
|
|
||||||
|
|
||||||
void enableScreen();
|
void setScreenTimeout(unsigned int seconds);
|
||||||
void disableScreen();
|
|
||||||
|
|
||||||
void setScreenTimeout( unsigned int seconds );
|
private:
|
||||||
private:
|
PowerSaver();
|
||||||
PowerSaver( );
|
void addScreenTimer();
|
||||||
static PowerSaver* instance;
|
void setScreenBlanking(bool state);
|
||||||
bool screenState;
|
|
||||||
unsigned int screenTimeout;
|
static PowerSaver *instance;
|
||||||
SDL_TimerID screenTimer;
|
bool screenState;
|
||||||
|
unsigned int screenTimeout;
|
||||||
void setScreenBlanking( bool state );
|
SDL_TimerID screenTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user