From e622854789ff8a521dc837379147b6e851d52875 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Mon, 3 Apr 2017 12:49:56 +0200 Subject: cOsdMenu::Display() now checks whether the OSD size has changed and if so calls SetDisplayMenu() --- HISTORY | 2 ++ menu.c | 7 ++----- osdbase.c | 9 +++++++-- osdbase.h | 3 ++- vdr.c | 7 ++++++- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/HISTORY b/HISTORY index 24e3014c..862cdd8d 100644 --- a/HISTORY +++ b/HISTORY @@ -8951,3 +8951,5 @@ Video Disk Recorder Revision History - Added a note to the "Pausing live video" section of the MANUAL, stating that the timer for paused live video will always record on the local VDR, even if an "SVDRP default host" has been set for normal timer recordings. +- cOsdMenu::Display() now checks whether the OSD size has changed and if so calls + SetDisplayMenu(). diff --git a/menu.c b/menu.c index b53678a9..ba468095 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 4.23 2017/03/30 15:15:03 kls Exp $ + * $Id: menu.c 4.24 2017/04/03 12:26:23 kls Exp $ */ #include "menu.h" @@ -3347,10 +3347,8 @@ eOSState cMenuSetupOSD::ProcessKey(eKeys Key) int oldOsdLanguageIndex = osdLanguageIndex; eOSState state = cMenuSetupBase::ProcessKey(Key); - if (ModifiedAppearance) { + if (ModifiedAppearance) cOsdProvider::UpdateOsdSize(true); - SetDisplayMenu(); - } if (osdLanguageIndex != oldOsdLanguageIndex || skinIndex != oldSkinIndex) { strn0cpy(data.OSDLanguage, I18nLocale(osdLanguageIndex), sizeof(data.OSDLanguage)); @@ -4107,7 +4105,6 @@ eOSState cMenuSetupPlugins::ProcessKey(eKeys Key) Store(); // Reinitialize OSD and skin, in case any plugin setup change has an influence on these: cOsdProvider::UpdateOsdSize(true); - SetDisplayMenu(); Display(); } } diff --git a/osdbase.c b/osdbase.c index 52ab240e..ac8026ff 100644 --- a/osdbase.c +++ b/osdbase.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osdbase.c 4.1 2015/09/10 11:23:07 kls Exp $ + * $Id: osdbase.c 4.2 2017/04/03 12:30:52 kls Exp $ */ #include "osdbase.h" @@ -77,6 +77,7 @@ void cOsdObject::Show(void) cSkinDisplayMenu *cOsdMenu::displayMenu = NULL; int cOsdMenu::displayMenuCount = 0; +int cOsdMenu::osdState = 0; cOsdMenu::cOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4) { @@ -96,8 +97,10 @@ cOsdMenu::cOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4) helpRed = helpGreen = helpYellow = helpBlue = NULL; helpDisplayed = false; status = NULL; - if (!displayMenuCount++) + if (!displayMenuCount++) { + cOsdProvider::OsdSizeChanged(osdState); // to get the current state SetDisplayMenu(); + } } cOsdMenu::~cOsdMenu() @@ -226,6 +229,8 @@ void cOsdMenu::Display(void) subMenu->Display(); return; } + if (cOsdProvider::OsdSizeChanged(osdState)) + SetDisplayMenu(); displayMenu->SetMessage(mtStatus, NULL); displayMenu->Clear(); cStatus::MsgOsdClear(); diff --git a/osdbase.h b/osdbase.h index 5e807e76..91b795d5 100644 --- a/osdbase.h +++ b/osdbase.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osdbase.h 4.1 2015/09/10 11:17:52 kls Exp $ + * $Id: osdbase.h 4.2 2017/04/03 12:02:16 kls Exp $ */ #ifndef __OSDBASE_H @@ -87,6 +87,7 @@ class cOsdMenu : public cOsdObject, public cList { private: static cSkinDisplayMenu *displayMenu; static int displayMenuCount; + static int osdState; int displayMenuItems; char *title; int cols[cSkinDisplayMenu::MaxTabs]; diff --git a/vdr.c b/vdr.c index 5b598f9c..925f35fb 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * The project's page is at http://www.tvdr.de * - * $Id: vdr.c 4.11 2017/03/25 14:20:30 kls Exp $ + * $Id: vdr.c 4.12 2017/04/03 12:35:37 kls Exp $ */ #include @@ -986,6 +986,11 @@ int main(int argc, char *argv[]) static time_t lastOsdSizeUpdate = 0; if (Now != lastOsdSizeUpdate) { // once per second cOsdProvider::UpdateOsdSize(); + static int OsdState = 0; + if (cOsdProvider::OsdSizeChanged(OsdState)) { + if (cOsdMenu *OsdMenu = dynamic_cast(Menu)) + OsdMenu->Display(); + } lastOsdSizeUpdate = Now; } } -- cgit v1.2.3