cOsdMenu::Display() now checks whether the OSD size has changed and if so calls SetDisplayMenu()

This commit is contained in:
Klaus Schmidinger 2017-04-03 12:49:56 +02:00
parent 792b9dc45f
commit e622854789
5 changed files with 19 additions and 9 deletions

View File

@ -8951,3 +8951,5 @@ Video Disk Recorder Revision History
- Added a note to the "Pausing live video" section of the MANUAL, stating that - 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 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. 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().

7
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "menu.h"
@ -3347,10 +3347,8 @@ eOSState cMenuSetupOSD::ProcessKey(eKeys Key)
int oldOsdLanguageIndex = osdLanguageIndex; int oldOsdLanguageIndex = osdLanguageIndex;
eOSState state = cMenuSetupBase::ProcessKey(Key); eOSState state = cMenuSetupBase::ProcessKey(Key);
if (ModifiedAppearance) { if (ModifiedAppearance)
cOsdProvider::UpdateOsdSize(true); cOsdProvider::UpdateOsdSize(true);
SetDisplayMenu();
}
if (osdLanguageIndex != oldOsdLanguageIndex || skinIndex != oldSkinIndex) { if (osdLanguageIndex != oldOsdLanguageIndex || skinIndex != oldSkinIndex) {
strn0cpy(data.OSDLanguage, I18nLocale(osdLanguageIndex), sizeof(data.OSDLanguage)); strn0cpy(data.OSDLanguage, I18nLocale(osdLanguageIndex), sizeof(data.OSDLanguage));
@ -4107,7 +4105,6 @@ eOSState cMenuSetupPlugins::ProcessKey(eKeys Key)
Store(); Store();
// Reinitialize OSD and skin, in case any plugin setup change has an influence on these: // Reinitialize OSD and skin, in case any plugin setup change has an influence on these:
cOsdProvider::UpdateOsdSize(true); cOsdProvider::UpdateOsdSize(true);
SetDisplayMenu();
Display(); Display();
} }
} }

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "osdbase.h"
@ -77,6 +77,7 @@ void cOsdObject::Show(void)
cSkinDisplayMenu *cOsdMenu::displayMenu = NULL; cSkinDisplayMenu *cOsdMenu::displayMenu = NULL;
int cOsdMenu::displayMenuCount = 0; int cOsdMenu::displayMenuCount = 0;
int cOsdMenu::osdState = 0;
cOsdMenu::cOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4) 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; helpRed = helpGreen = helpYellow = helpBlue = NULL;
helpDisplayed = false; helpDisplayed = false;
status = NULL; status = NULL;
if (!displayMenuCount++) if (!displayMenuCount++) {
cOsdProvider::OsdSizeChanged(osdState); // to get the current state
SetDisplayMenu(); SetDisplayMenu();
}
} }
cOsdMenu::~cOsdMenu() cOsdMenu::~cOsdMenu()
@ -226,6 +229,8 @@ void cOsdMenu::Display(void)
subMenu->Display(); subMenu->Display();
return; return;
} }
if (cOsdProvider::OsdSizeChanged(osdState))
SetDisplayMenu();
displayMenu->SetMessage(mtStatus, NULL); displayMenu->SetMessage(mtStatus, NULL);
displayMenu->Clear(); displayMenu->Clear();
cStatus::MsgOsdClear(); cStatus::MsgOsdClear();

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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 #ifndef __OSDBASE_H
@ -87,6 +87,7 @@ class cOsdMenu : public cOsdObject, public cList<cOsdItem> {
private: private:
static cSkinDisplayMenu *displayMenu; static cSkinDisplayMenu *displayMenu;
static int displayMenuCount; static int displayMenuCount;
static int osdState;
int displayMenuItems; int displayMenuItems;
char *title; char *title;
int cols[cSkinDisplayMenu::MaxTabs]; int cols[cSkinDisplayMenu::MaxTabs];

7
vdr.c
View File

@ -22,7 +22,7 @@
* *
* The project's page is at http://www.tvdr.de * 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 <getopt.h> #include <getopt.h>
@ -986,6 +986,11 @@ int main(int argc, char *argv[])
static time_t lastOsdSizeUpdate = 0; static time_t lastOsdSizeUpdate = 0;
if (Now != lastOsdSizeUpdate) { // once per second if (Now != lastOsdSizeUpdate) { // once per second
cOsdProvider::UpdateOsdSize(); cOsdProvider::UpdateOsdSize();
static int OsdState = 0;
if (cOsdProvider::OsdSizeChanged(OsdState)) {
if (cOsdMenu *OsdMenu = dynamic_cast<cOsdMenu *>(Menu))
OsdMenu->Display();
}
lastOsdSizeUpdate = Now; lastOsdSizeUpdate = Now;
} }
} }