From 7300fdf91c07932a1360a2cdc211d83867524684 Mon Sep 17 00:00:00 2001 From: kamel5 Date: Sun, 3 Nov 2019 11:30:41 +0100 Subject: [PATCH] Workaround for HWAccelerated OSD --- channelepg.c | 4 +++- channelepg.h | 2 +- config.c | 2 ++ config.h | 1 + po/ca_ES.po | 17 ++++++++++------- po/de_DE.po | 17 ++++++++++------- po/it_IT.po | 17 ++++++++++------- po/ru_RU.po | 17 ++++++++++------- po/sk_SK.po | 17 ++++++++++------- setup.c | 2 ++ tvguideosd.c | 44 +++++++++++++++++++++++++++++--------------- tvguideosd.h | 2 +- 12 files changed, 89 insertions(+), 53 deletions(-) diff --git a/channelepg.c b/channelepg.c index 37713e6..d915386 100644 --- a/channelepg.c +++ b/channelepg.c @@ -130,9 +130,11 @@ int cChannelEpg::getY() { return geoManager.statusHeaderHeight + geoManager.timeLineHeight + num*geoManager.rowHeight; } -cGridElement *cChannelEpg::getActive() { +cGridElement *cChannelEpg::getActive(bool last) { cTimeManager t; t.Now(); + if (last) + return grids.Last(); for (cGridElement *grid = grids.First(); grid; grid = grids.Next(grid)) { if (grid->Match(t.Get())) return grid; diff --git a/channelepg.h b/channelepg.h index 4f20bc9..6d648b4 100644 --- a/channelepg.h +++ b/channelepg.h @@ -42,7 +42,7 @@ public: int Stop() { return timeManager->GetEnd(); }; const char* Name() { return channel->Name(); }; const cChannel *getChannel() {return channel;} - cGridElement *getActive(); + cGridElement *getActive(bool last = false); cGridElement *getNext(cGridElement *activeGrid); cGridElement *getPrev(cGridElement *activeGrid); cGridElement *getNeighbor(cGridElement *activeGrid); diff --git a/config.c b/config.c index 56eb831..532d842 100644 --- a/config.c +++ b/config.c @@ -2,6 +2,7 @@ #include "config.h" cTVGuideConfig::cTVGuideConfig() { + useHWAccel = false; debugImageLoading = 0; showMainMenuEntry = 1; replaceOriginalSchedule = 0; @@ -243,6 +244,7 @@ cString cTVGuideConfig::checkSlashAtEnd(std::string path) { bool cTVGuideConfig::SetupParse(const char *Name, const char *Value) { if (strcmp(Name, "timeFormat") == 0) timeFormat = atoi(Value); else if (strcmp(Name, "debugImageLoading") == 0) debugImageLoading = atoi(Value); + else if (strcmp(Name, "useHWAccel") == 0) useHWAccel = atoi(Value); else if (strcmp(Name, "showMainMenuEntry") == 0) showMainMenuEntry = atoi(Value); else if (strcmp(Name, "replaceOriginalSchedule") == 0) replaceOriginalSchedule = atoi(Value); else if (strcmp(Name, "useNopacityTheme") == 0) useNopacityTheme = atoi(Value); diff --git a/config.h b/config.h index 277c637..2f723e2 100644 --- a/config.h +++ b/config.h @@ -49,6 +49,7 @@ class cTVGuideConfig { public: cTVGuideConfig(); ~cTVGuideConfig(); + int useHWAccel; int debugImageLoading; int showMainMenuEntry; int replaceOriginalSchedule; diff --git a/po/ca_ES.po b/po/ca_ES.po index a6a2014..3a2c5a7 100644 --- a/po/ca_ES.po +++ b/po/ca_ES.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-tvguide 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-22 14:34+0200\n" +"POT-Creation-Date: 2019-11-03 12:37+0100\n" "PO-Revision-Date: 2013-09-21 17:49+0200\n" "Last-Translator: My friend Thanks David \n" "Language-Team: \n" @@ -99,12 +99,6 @@ msgstr "" msgid "recordings done" msgstr "" -msgid "What's on now" -msgstr "" - -msgid "What's on next" -msgstr "" - msgid "Instant Record" msgstr "Enregistra a l'instant" @@ -567,6 +561,12 @@ msgstr "No s'han trobat gravacions per" msgid "No Favorites available" msgstr "" +msgid "What's on now" +msgstr "" + +msgid "What's on next" +msgstr "" + msgid "whole term must appear" msgstr "expressió completa" @@ -675,6 +675,9 @@ msgstr "si existeix" msgid "always" msgstr "sempre" +msgid "Use workaround for HWAccelerated OSD" +msgstr "" + msgid "Show Main Menu Entry" msgstr "Mostra entrada del menú principal" diff --git a/po/de_DE.po b/po/de_DE.po index 082c58c..b0f1af0 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-tvguide 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-22 14:34+0200\n" +"POT-Creation-Date: 2019-11-03 12:37+0100\n" "PO-Revision-Date: 2012-08-25 17:49+0200\n" "Last-Translator: Horst\n" "Language-Team: \n" @@ -96,12 +96,6 @@ msgstr "aktive Timer" msgid "recordings done" msgstr "erledigte Aufnahmen" -msgid "What's on now" -msgstr "Was läuft jetzt?" - -msgid "What's on next" -msgstr "Was läuft als nächstes?" - msgid "Instant Record" msgstr "Aufnahme" @@ -564,6 +558,12 @@ msgstr "Keine Aufnahmen gefunden für" msgid "No Favorites available" msgstr "Keine Favoriten verfügbar" +msgid "What's on now" +msgstr "Was läuft jetzt?" + +msgid "What's on next" +msgstr "Was läuft als nächstes?" + msgid "whole term must appear" msgstr "vollständiger Ausdruck" @@ -672,6 +672,9 @@ msgstr "falls vorhanden" msgid "always" msgstr "immer" +msgid "Use workaround for HWAccelerated OSD" +msgstr "" + msgid "Show Main Menu Entry" msgstr "Hauptmenüeintrag anzeigen" diff --git a/po/it_IT.po b/po/it_IT.po index a21e02d..b24c735 100644 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-tvguide 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-22 14:34+0200\n" +"POT-Creation-Date: 2019-11-03 12:37+0100\n" "PO-Revision-Date: 2012-08-25 17:49+0200\n" "Last-Translator: fiveten_59\n" "Language-Team: \n" @@ -96,12 +96,6 @@ msgstr "Timers attivi" msgid "recordings done" msgstr "registrazione eseguita" -msgid "What's on now" -msgstr "Was läuft jetzt?" - -msgid "What's on next" -msgstr "Was läuft als nächstes?" - msgid "Instant Record" msgstr "Registrazione immediata" @@ -564,6 +558,12 @@ msgstr "Nessuna registrazione trovata per" msgid "No Favorites available" msgstr "Nessun Favoriti disponibile" +msgid "What's on now" +msgstr "Was läuft jetzt?" + +msgid "What's on next" +msgstr "Was läuft als nächstes?" + msgid "whole term must appear" msgstr "vollständiger Ausdruck" @@ -672,6 +672,9 @@ msgstr "se esiste" msgid "always" msgstr "sempre" +msgid "Use workaround for HWAccelerated OSD" +msgstr "" + msgid "Show Main Menu Entry" msgstr "Hauptmenüeintrag anzeigen" diff --git a/po/ru_RU.po b/po/ru_RU.po index c668d4c..9bcb94c 100644 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-tvguide 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-22 14:34+0200\n" +"POT-Creation-Date: 2019-11-03 12:37+0100\n" "PO-Revision-Date: 2013-09-25 17:49+0400\n" "Last-Translator: AmiD, ilya\n" "Language-Team: Russia-Cherepovets(wm.amid@gmail.com)\n" @@ -96,12 +96,6 @@ msgstr "" msgid "recordings done" msgstr "" -msgid "What's on now" -msgstr "" - -msgid "What's on next" -msgstr "" - msgid "Instant Record" msgstr "Записать" @@ -564,6 +558,12 @@ msgstr "Не найдено записей:" msgid "No Favorites available" msgstr "" +msgid "What's on now" +msgstr "" + +msgid "What's on next" +msgstr "" + msgid "whole term must appear" msgstr "фраза" @@ -672,6 +672,9 @@ msgstr "если существует" msgid "always" msgstr "всегда" +msgid "Use workaround for HWAccelerated OSD" +msgstr "" + msgid "Show Main Menu Entry" msgstr "Показывать пункт в главном меню" diff --git a/po/sk_SK.po b/po/sk_SK.po index 317b851..c962053 100644 --- a/po/sk_SK.po +++ b/po/sk_SK.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-tvguide 1.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-22 14:34+0200\n" +"POT-Creation-Date: 2019-11-03 12:37+0100\n" "PO-Revision-Date: 2013-09-15 00:12+0100\n" "Last-Translator: Milan Hrala \n" "Language-Team: \n" @@ -96,12 +96,6 @@ msgstr "" msgid "recordings done" msgstr "" -msgid "What's on now" -msgstr "" - -msgid "What's on next" -msgstr "" - msgid "Instant Record" msgstr "Okamite nahra" @@ -564,6 +558,12 @@ msgstr "Nena msgid "No Favorites available" msgstr "" +msgid "What's on now" +msgstr "" + +msgid "What's on next" +msgstr "" + msgid "whole term must appear" msgstr "kompletn vraz" @@ -672,6 +672,9 @@ msgstr "ak s msgid "always" msgstr "vdy" +msgid "Use workaround for HWAccelerated OSD" +msgstr "" + msgid "Show Main Menu Entry" msgstr "Zobrazi v hlavnom menu" diff --git a/setup.c b/setup.c index 6bb040c..c42eb62 100644 --- a/setup.c +++ b/setup.c @@ -60,6 +60,7 @@ void cTvguideSetup::Store(void) { SetupStore("debugImageLoading", config.debugImageLoading); SetupStore("useNopacityTheme", config.useNopacityTheme); SetupStore("themeIndex", config.themeIndex); + SetupStore("useHWAccel", config.useHWAccel); SetupStore("showMainMenuEntry", config.showMainMenuEntry); SetupStore("replaceOriginalSchedule", config.replaceOriginalSchedule); SetupStore("displayMode", config.displayMode); @@ -203,6 +204,7 @@ cMenuSetupGeneral::cMenuSetupGeneral(cTVGuideConfig* data) : cMenuSetupSubMenu( void cMenuSetupGeneral::Set(void) { int currentItem = Current(); Clear(); + Add(new cMenuEditBoolItem(tr("Use workaround for HWAccelerated OSD"), &tmpConfig->useHWAccel)); Add(new cMenuEditBoolItem(tr("Show Main Menu Entry"), &tmpConfig->showMainMenuEntry)); Add(new cMenuEditBoolItem(tr("Replace VDR Schedules Menu"), &tmpConfig->replaceOriginalSchedule)); Add(new cMenuEditBoolItem(tr("Use appropriate nOpacity Theme"), &tmpConfig->useNopacityTheme)); diff --git a/tvguideosd.c b/tvguideosd.c index cd86544..fc64eae 100644 --- a/tvguideosd.c +++ b/tvguideosd.c @@ -195,7 +195,7 @@ void cTvGuideOsd::drawGridsChannelJump(int offset) { } } -void cTvGuideOsd::drawGridsTimeJump() { +void cTvGuideOsd::drawGridsTimeJump(bool last) { if (columns.Count() == 0) return; cChannelEpg *colActive = NULL; @@ -209,7 +209,7 @@ void cTvGuideOsd::drawGridsTimeJump() { column->readGrids(); column->drawGrids(); } - activeGrid = colActive->getActive(); + activeGrid = colActive->getActive(last); if (activeGrid) { activeGrid->SetActive(); activeGrid->Draw(); @@ -372,12 +372,19 @@ void cTvGuideOsd::timeForward() { void cTvGuideOsd::ScrollForward() { timeManager->AddStep(config.stepMinutes); - timeLine->drawDateViewer(); - timeLine->setTimeline(); - for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) { - column->AddNewGridsAtEnd(); - column->ClearOutdatedStart(); - column->drawGrids(); + if (config.useHWAccel) { + drawGridsTimeJump(true); + timeLine->drawDateViewer(); + timeLine->drawClock(); + timeLine->setTimeline(); + } else { + timeLine->drawDateViewer(); + timeLine->setTimeline(); + for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) { + column->AddNewGridsAtEnd(); + column->ClearOutdatedStart(); + column->drawGrids(); + } } } @@ -406,13 +413,20 @@ void cTvGuideOsd::ScrollBack() { bool tooFarInPast = timeManager->DelStep(config.stepMinutes); if (tooFarInPast) return; - timeLine->drawDateViewer(); - timeLine->setTimeline(); - for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) { - column->AddNewGridsAtStart(); - column->ClearOutdatedEnd(); - column->drawGrids(); - } + if (config.useHWAccel) { + drawGridsTimeJump(); + timeLine->drawDateViewer(); + timeLine->drawClock(); + timeLine->setTimeline(); + } else { + timeLine->drawDateViewer(); + timeLine->setTimeline(); + for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) { + column->AddNewGridsAtStart(); + column->ClearOutdatedEnd(); + column->drawGrids(); + } + } } void cTvGuideOsd::processKeyUp() { diff --git a/tvguideosd.h b/tvguideosd.h index 9ff4c2f..f7027f5 100644 --- a/tvguideosd.h +++ b/tvguideosd.h @@ -31,7 +31,7 @@ private: void drawOsd(); void readChannels(const cChannel *channelStart); void drawGridsChannelJump(int offset = 0); - void drawGridsTimeJump(); + void drawGridsTimeJump(bool last = false); void processKeyUp(); void processKeyDown(); void processKeyLeft();