summaryrefslogtreecommitdiff
path: root/display.c
diff options
context:
space:
mode:
authormrwastl <mrwastl@users.sourceforge.net>2010-06-18 22:52:36 +0200
committermrwastl <mrwastl@users.sourceforge.net>2010-06-18 22:52:36 +0200
commitd8f8154bb9967da609354b27e25ae6f47ba6dd27 (patch)
tree2d34e0601ca87a024d6e13a295c8883ee73ec9fb /display.c
parent4f8e89fbe330a263130ca066a1671297f939e42d (diff)
downloadvdr-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.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/display.c b/display.c
index d72b2e1..f810c4a 100644
--- a/display.c
+++ b/display.c
@@ -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;