diff options
author | mrwastl <mrwastl@users.sourceforge.net> | 2010-06-18 22:52:36 +0200 |
---|---|---|
committer | mrwastl <mrwastl@users.sourceforge.net> | 2010-06-18 22:52:36 +0200 |
commit | d8f8154bb9967da609354b27e25ae6f47ba6dd27 (patch) | |
tree | 2d34e0601ca87a024d6e13a295c8883ee73ec9fb /display.c | |
parent | 4f8e89fbe330a263130ca066a1671297f939e42d (diff) | |
download | vdr-plugin-graphlcd-d8f8154bb9967da609354b27e25ae6f47ba6dd27.tar.gz vdr-plugin-graphlcd-d8f8154bb9967da609354b27e25ae6f47ba6dd27.tar.bz2 |
new class for external services (service informations from other plugins: defined for now: radiotext, lcr, femon); radiotext/lcr-hack no longer necessary because of ext. services; new tokens for ext. services; bug fixes (casting, uint64_t, update detection); patches for femon <= 1.7.7
Diffstat (limited to 'display.c')
-rw-r--r-- | display.c | 26 |
1 files changed, 21 insertions, 5 deletions
@@ -49,6 +49,8 @@ cGraphLCDDisplay::cGraphLCDDisplay() nCurrentBrightness = -1; LastTimeBrightness = 0; bBrightnessActive = true; + + mService = NULL; /* cannot be initialised here (mGraphLCDState not yet available) */ } cGraphLCDDisplay::~cGraphLCDDisplay() @@ -59,6 +61,8 @@ cGraphLCDDisplay::~cGraphLCDDisplay() delete mSkinConfig; delete mScreen; delete mGraphLCDState; + + delete mService; } bool cGraphLCDDisplay::Initialise(GLCD::cDriver * Lcd, const std::string & CfgPath, const std::string & SkinsPath, const std::string & SkinName) @@ -73,6 +77,9 @@ bool cGraphLCDDisplay::Initialise(GLCD::cDriver * Lcd, const std::string & CfgPa if (!mGraphLCDState) return false; + // must be initialised before cGraphLCDSkinConfig (else: seg fault) + mService = new cGraphLCDService(mGraphLCDState); + skinsPath = SkinsPath; if (skinsPath == "") skinsPath = CfgPath + "/skins"; @@ -191,19 +198,28 @@ void cGraphLCDDisplay::Action(void) mUpdate = true; } + + bool bActive = bBrightnessActive + || (mState != StateNormal) + || (GraphLCDSetup.ShowVolume && mShowVolume) + || (GraphLCDSetup.ShowMessages && mGraphLCDState->ShowMessage()) + || (GraphLCDSetup.BrightnessDelay == 900); + // update display if BrightnessDelay is exceeded - if ((nCurrentBrightness == GraphLCDSetup.BrightnessActive) && - ((cTimeMs::Now() - LastTimeBrightness) > (uint64_t) (GraphLCDSetup.BrightnessDelay*1000))) + if (bActive && (nCurrentBrightness == GraphLCDSetup.BrightnessActive) && + ((int)((cTimeMs::Now() - LastTimeBrightness)) > (GraphLCDSetup.BrightnessDelay*1000))) { mUpdate = true; } - // external service changed (check each second) - if ( (currTimeMs/1000 != mLastTimeMs/1000) && mGraphLCDState->CheckServiceEventUpdate()) + + // external service changed (check each 1/10th second) + if ( (currTimeMs/100 != mLastTimeMs/100) && mService->NeedsUpdate(currTimeMs)) { mUpdate = true; } + if (mUpdate) { mUpdateAt = 0; @@ -353,7 +369,7 @@ void cGraphLCDDisplay::SetBrightness() else { if (GraphLCDSetup.BrightnessDelay < 1 - || ((cTimeMs::Now() - LastTimeBrightness) > (uint64_t) (GraphLCDSetup.BrightnessDelay*1000))) + || ((int)(cTimeMs::Now() - LastTimeBrightness) > (GraphLCDSetup.BrightnessDelay*1000))) { mLcd->SetBrightness(GraphLCDSetup.BrightnessIdle); nCurrentBrightness = GraphLCDSetup.BrightnessIdle; |