From f0ce22b6b9cfda828ef000d652a0f4e2dc24334d Mon Sep 17 00:00:00 2001 From: mrwastl Date: Tue, 4 May 2010 23:59:24 +0200 Subject: changing of brightness; external service informations from plugins radiotext and lcr --- display.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'display.c') diff --git a/display.c b/display.c index d6f385b..5040fb9 100644 --- a/display.c +++ b/display.c @@ -8,6 +8,7 @@ * * (c) 2001-2004 Carsten Siebholz * (c) 2004 Andreas Regel + * (c) 2010 Wolfgang Astleitner */ #include @@ -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(); +} -- cgit v1.2.3