diff options
author | kamel5 <vdr.kamel5 (at) gmx (dot) net> | 2019-10-13 12:16:34 +0200 |
---|---|---|
committer | kamel5 <vdr.kamel5 (at) gmx (dot) net> | 2019-10-13 13:46:23 +0200 |
commit | 9173d14b10ee39ab206be98fe5a01c5591f392d2 (patch) | |
tree | f420d70723531255c8349beb4aefdcf0807a8ebb | |
parent | 3386c05e915d23c1f6126b8c7deac172857feaaf (diff) | |
download | vdr-plugin-tvguide-9173d14b10ee39ab206be98fe5a01c5591f392d2.tar.gz vdr-plugin-tvguide-9173d14b10ee39ab206be98fe5a01c5591f392d2.tar.bz2 |
Fixed updating current time
-rw-r--r-- | timeline.c | 34 | ||||
-rw-r--r-- | timeline.h | 3 | ||||
-rw-r--r-- | tvguideosd.c | 9 |
3 files changed, 27 insertions, 19 deletions
@@ -3,6 +3,7 @@ cTimeLine::cTimeLine(cTimeManager *timeManager) { this->timeManager = timeManager; + lastClock = ""; if (config.displayMode == eVertical) { dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(0, geoManager.statusHeaderHeight + geoManager.clockHeight, @@ -263,20 +264,25 @@ void cTimeLine::setTimeline() { drawCurrentTimeBase(); } -void cTimeLine::drawClock() { - if (config.displayMode == eVertical) - clock->Fill(clrTransparent); +bool cTimeLine::drawClock() { cString currentTime = timeManager->GetCurrentTime(); - const cFont *font = (config.displayMode == eVertical)?fontManager.FontTimeLineTime:fontManager.FontTimeLineTimeHorizontal; - int textHeight = font->Height(); - int clockTextWidth = font->Width(*currentTime); - tColor colorFontBack = (config.style == eStyleFlat)?theme.Color(clrHeader):clrTransparent; - if (config.style == eStyleGraphical) { - clock->drawBackgroundGraphical(bgClock); - } else { - clock->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending)); - clock->drawBackground(); - clock->drawBorder(); + if (strcmp(currentTime, lastClock)) { + if (config.displayMode == eVertical) + clock->Fill(clrTransparent); + const cFont *font = (config.displayMode == eVertical) ? fontManager.FontTimeLineTime : fontManager.FontTimeLineTimeHorizontal; + int textHeight = font->Height(); + int clockTextWidth = font->Width(*currentTime); + tColor colorFontBack = (config.style == eStyleFlat) ? theme.Color(clrHeader) : clrTransparent; + if (config.style == eStyleGraphical) { + clock->drawBackgroundGraphical(bgClock); + } else { + clock->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending)); + clock->drawBackground(); + clock->drawBorder(); + } + clock->DrawText(cPoint((geoManager.clockWidth - clockTextWidth) / 2, (geoManager.clockHeight - textHeight) / 2), *currentTime, theme.Color(clrFont), colorFontBack, font); + lastClock = currentTime; + return true; } - clock->DrawText(cPoint((geoManager.clockWidth-clockTextWidth)/2, (geoManager.clockHeight-textHeight)/2), *currentTime, theme.Color(clrFont), colorFontBack, font); + return false; } @@ -13,6 +13,7 @@ private: cPixmap *timeline; cStyledPixmap *clock; cPixmap *timeBase; + cString lastClock; void decorateTile(int posX, int posY, int tileWidth, int tileHeight); void drawRoundedCorners(int posX, int posY, int width, int height, int radius); cImage *createBackgroundImage(int width, int height, tColor clrBgr, tColor clrBlend); @@ -23,7 +24,7 @@ public: void setTimeline(); void drawDateViewer(); void drawTimeline(); - void drawClock(); + bool drawClock(); }; #endif //__TVGUIDE_TIMELINE_H diff --git a/tvguideosd.c b/tvguideosd.c index 897ad6c..f35bdbc 100644 --- a/tvguideosd.c +++ b/tvguideosd.c @@ -352,7 +352,7 @@ void cTvGuideOsd::channelBack() { void cTvGuideOsd::timeForward() { bool actionDone = false; - if ( (timeManager->GetEnd() - activeGrid->EndTime())/60 < 30 ) { + if ((timeManager->GetEnd() - activeGrid->EndTime())/60 < 30 ) { ScrollForward(); actionDone = true; } @@ -373,7 +373,6 @@ void cTvGuideOsd::timeForward() { void cTvGuideOsd::ScrollForward() { timeManager->AddStep(config.stepMinutes); timeLine->drawDateViewer(); - timeLine->drawClock(); timeLine->setTimeline(); for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) { column->AddNewGridsAtEnd(); @@ -384,7 +383,7 @@ void cTvGuideOsd::ScrollForward() { void cTvGuideOsd::timeBack() { bool actionDone = false; - if ( (activeGrid->StartTime() - timeManager->GetStart())/60 < 30 ) { + if ((activeGrid->StartTime() - timeManager->GetStart())/60 < 30 ) { ScrollBack(); actionDone = true; } @@ -408,7 +407,6 @@ void cTvGuideOsd::ScrollBack() { if (tooFarInPast) return; timeLine->drawDateViewer(); - timeLine->drawClock(); timeLine->setTimeline(); for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) { column->AddNewGridsAtStart(); @@ -776,6 +774,9 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) { case kNone: if (channelJumper) CheckTimeout(); break; default: break; } + if (timeLine->drawClock()) { + osdManager.flush(); + } } if (!alreadyUnlocked) { cPixmap::Unlock(); |