diff options
author | mrwastl <mrwastl@users.sourceforge.net> | 2010-05-04 23:59:24 +0200 |
---|---|---|
committer | mrwastl <mrwastl@users.sourceforge.net> | 2010-05-04 23:59:24 +0200 |
commit | f0ce22b6b9cfda828ef000d652a0f4e2dc24334d (patch) | |
tree | 8926946b8e6ac14cf97fef95486073ee4855efb9 /display.c | |
parent | 8a4168bd0d2e468604755398f18be1fba9046aa0 (diff) | |
download | vdr-plugin-graphlcd-f0ce22b6b9cfda828ef000d652a0f4e2dc24334d.tar.gz vdr-plugin-graphlcd-f0ce22b6b9cfda828ef000d652a0f4e2dc24334d.tar.bz2 |
changing of brightness; external service informations from plugins radiotext and lcr
Diffstat (limited to 'display.c')
-rw-r--r-- | display.c | 57 |
1 files changed, 57 insertions, 0 deletions
@@ -8,6 +8,7 @@ * * (c) 2001-2004 Carsten Siebholz <c.siebholz AT t-online.de> * (c) 2004 Andreas Regel <andreas.regel AT powarman.de> + * (c) 2010 Wolfgang Astleitner <mrwastl AT users sourceforge net> */ #include <stdlib.h> @@ -44,6 +45,10 @@ cGraphLCDDisplay::cGraphLCDDisplay() mLastState = StateNormal; mShowVolume = false; + + nCurrentBrightness = -1; + LastTimeBrightness = 0; + bBrightnessActive = true; } cGraphLCDDisplay::~cGraphLCDDisplay() @@ -173,6 +178,19 @@ void cGraphLCDDisplay::Action(void) mUpdate = true; } + // update display if BrightnessDelay is exceeded + if ((nCurrentBrightness == GraphLCDSetup.BrightnessActive) && + ((cTimeMs::Now() - LastTimeBrightness) > (uint64_t) (GraphLCDSetup.BrightnessDelay*1000))) + { + mUpdate = true; + } + + // external service changed (check each second) + if ( (currTimeMs/1000 != mLastTimeMs/1000) && mGraphLCDState->CheckServiceEventUpdate()) + { + mUpdate = true; + } + if (mUpdate) { mUpdateAt = 0; @@ -206,6 +224,7 @@ void cGraphLCDDisplay::Action(void) mLcd->SetScreen(mScreen->Data(), mScreen->Width(), mScreen->Height(), mScreen->LineSize()); mLcd->Refresh(false); mLastTimeMs = currTimeMs; + SetBrightness(); } else { @@ -297,3 +316,41 @@ void cGraphLCDDisplay::SetMenuCurrent() } UpdateIn(100); } + +void cGraphLCDDisplay::SetBrightness() +{ + //mutex.Lock(); + bool bActive = bBrightnessActive + || (mState != StateNormal) + || (GraphLCDSetup.ShowVolume && mShowVolume) + || (GraphLCDSetup.ShowMessages && mGraphLCDState->ShowMessage()) + || (GraphLCDSetup.BrightnessDelay == 900); + if (bActive) + { + LastTimeBrightness = cTimeMs::Now(); + bBrightnessActive = false; + } + if ((bActive ? GraphLCDSetup.BrightnessActive : GraphLCDSetup.BrightnessIdle) != nCurrentBrightness) + { + if (bActive) + { + mLcd->SetBrightness(GraphLCDSetup.BrightnessActive); + nCurrentBrightness = GraphLCDSetup.BrightnessActive; + } + else + { + if (GraphLCDSetup.BrightnessDelay < 1 + || ((cTimeMs::Now() - LastTimeBrightness) > (uint64_t) (GraphLCDSetup.BrightnessDelay*1000))) + { + mLcd->SetBrightness(GraphLCDSetup.BrightnessIdle); + nCurrentBrightness = GraphLCDSetup.BrightnessIdle; + } + } + } + //mutex.Unlock(); +} + +void cGraphLCDDisplay::ForceUpdateBrightness() { + bBrightnessActive = true; + SetBrightness(); +} |