From e282f8a55d42a99e10523d20484dcbabc89e470b Mon Sep 17 00:00:00 2001 From: Ayla Date: Tue, 16 Aug 2011 02:17:21 +0200 Subject: [PATCH] Enable the SDL timer subsystem only if the backlight timeout is enabled. --- src/gmenu2x.cpp | 2 +- src/powersaver.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gmenu2x.cpp b/src/gmenu2x.cpp index b6774d6..d5b1be7 100644 --- a/src/gmenu2x.cpp +++ b/src/gmenu2x.cpp @@ -360,7 +360,7 @@ GMenu2X::GMenu2X() setenv("SDL_FBCON_DONT_CLEAR", "1", 0); //Screen - if( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_JOYSTICK|SDL_INIT_TIMER)<0 ) { + if( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_JOYSTICK)<0 ) { ERROR("Could not initialize SDL: %s\n", SDL_GetError()); quit(); } diff --git a/src/powersaver.cpp b/src/powersaver.cpp index 914555a..4d61c80 100644 --- a/src/powersaver.cpp +++ b/src/powersaver.cpp @@ -7,7 +7,7 @@ #include "powersaver.h" #include "debug.h" PowerSaver* PowerSaver::instance = NULL; -Uint32 screenTimerCallback(Uint32 interval, void *param) +Uint32 screenTimerCallback(Uint32, void *) { DEBUG("Disable Backlight Event\n"); PowerSaver::getInstance()->disableScreen(); @@ -22,12 +22,14 @@ PowerSaver* PowerSaver::getInstance() { } PowerSaver::PowerSaver( ) { + SDL_InitSubSystem(SDL_INIT_TIMER); setScreenTimeout(0); screenTimer = NULL; } PowerSaver::~PowerSaver() { - SDL_RemoveTimer(screenTimer); + SDL_RemoveTimer(screenTimer); + SDL_QuitSubSystem(SDL_INIT_TIMER); } void PowerSaver::setScreenTimeout( unsigned int seconds ) { @@ -39,6 +41,7 @@ void PowerSaver::resetScreenTimer() { if ( screenTimer != NULL ) { SDL_RemoveTimer(screenTimer); } + addScreenTimer(); //If display is off, turn on it if ( !screenState ) { @@ -52,6 +55,7 @@ void PowerSaver::addScreenTimer() { screenTimer = NULL; return; } + screenTimer = SDL_AddTimer(screenTimeout*1000, screenTimerCallback,NULL); if ( screenTimer == NULL ) { ERROR("Could not initialize SDLTimer: %s\n", SDL_GetError());