From 9173d14b10ee39ab206be98fe5a01c5591f392d2 Mon Sep 17 00:00:00 2001 From: kamel5 Date: Sun, 13 Oct 2019 12:16:34 +0200 Subject: [PATCH] Fixed updating current time --- timeline.c | 34 ++++++++++++++++++++-------------- timeline.h | 3 ++- tvguideosd.c | 9 +++++---- 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/timeline.c b/timeline.c index b21d9dd..c13a7c0 100644 --- a/timeline.c +++ b/timeline.c @@ -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; } diff --git a/timeline.h b/timeline.h index 45fe673..7c424e8 100644 --- a/timeline.h +++ b/timeline.h @@ -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();