From 10bf7cbcc974fd391fc2b21e227efc6df83d1bce Mon Sep 17 00:00:00 2001 From: root Date: Thu, 22 Jul 2010 22:27:37 +0200 Subject: Fix bug when editing parameters When a parameter has not the same scala in the gui and in the logic, the back button in a submenu corrupts the parameter --- menu.c | 5 ++++- menu.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/menu.c b/menu.c index 49da62b..9c1e675 100644 --- a/menu.c +++ b/menu.c @@ -34,6 +34,7 @@ and StreamType.value via OSD menu (see README) */ cPvrMenuSetup::cPvrMenuSetup() { newPvrSetup = PvrSetup; + // videobitrate in setup.conf is 0..27000, but ivtv 0..27000000 newPvrSetup.VideoBitrateTV.value = (int)(PvrSetup.VideoBitrateTV.value / 1000); newPvrSetup.VideoBitrateTV.queryctrl.minimum = (int)(PvrSetup.VideoBitrateTV.queryctrl.minimum / 1000); @@ -69,6 +70,7 @@ cPvrMenuSetup::cPvrMenuSetup() newPvrSetup.StreamType.value = (newPvrSetup.StreamType.value == 0 ? 0 : 1); + cachedPvrSetup = newPvrSetup; Add(new cOsdItem(tr("Setup.pvrinput$General Parameters"))); Add(new cOsdItem(tr("Setup.pvrinput$Video Parameters"))); Add(new cOsdItem(tr("Setup.pvrinput$Audio Parameters"))); @@ -84,7 +86,7 @@ eOSState cPvrMenuSetup::ProcessKey(eKeys Key) { Store(); } if (Key == kBack && HasSubMenu()) { - newPvrSetup = PvrSetup; + newPvrSetup = cachedPvrSetup; } if (!HasSubMenu()) { if (Key == kOk) { @@ -115,6 +117,7 @@ eOSState cPvrMenuSetup::ProcessKey(eKeys Key) { void cPvrMenuSetup::Store() { + cachedPvrSetup = newPvrSetup; SetupStore("HideMainMenuEntry", PvrSetup.HideMainMenuEntry = newPvrSetup.HideMainMenuEntry); SetupStore("UseOnlyCard", PvrSetup.UseOnlyCard = newPvrSetup.UseOnlyCard); diff --git a/menu.h b/menu.h index 467ee55..1805dd1 100644 --- a/menu.h +++ b/menu.h @@ -41,6 +41,7 @@ typedef enum { class cPvrMenuSetup : public cMenuSetupPage { private: cPvrSetup newPvrSetup; + cPvrSetup cachedPvrSetup; protected: virtual void Store(); public: -- cgit v1.2.3