summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY2
-rw-r--r--menu.c11
-rw-r--r--menu.h3
-rw-r--r--vdr.c7
4 files changed, 16 insertions, 7 deletions
diff --git a/HISTORY b/HISTORY
index 1ad51eec..f55df42b 100644
--- a/HISTORY
+++ b/HISTORY
@@ -7183,3 +7183,5 @@ Video Disk Recorder Revision History
if the editing point merges two seamlessly fitting parts of the same stream (thanks
to Torsten Lang).
- Fixed displaying messages in the LCARS skin.
+- Fixed checking for a visible live programme in case a menu or the channel display
+ is currently open.
diff --git a/menu.c b/menu.c
index 45316fa7..c3ea64e0 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 2.55 2012/06/09 14:27:02 kls Exp $
+ * $Id: menu.c 2.56 2012/06/13 11:24:40 kls Exp $
*/
#include "menu.h"
@@ -1888,6 +1888,8 @@ eOSState cMenuCommands::ProcessKey(eKeys Key)
// --- cMenuCam --------------------------------------------------------------
+static bool CamMenuIsOpen = false;
+
class cMenuCam : public cOsdMenu {
private:
cCamSlot *camSlot;
@@ -1919,6 +1921,7 @@ cMenuCam::cMenuCam(cCamSlot *CamSlot)
lastCamExchange = time(NULL);
SetNeedsFastResponse(true);
QueryCam();
+ CamMenuIsOpen = true;
}
cMenuCam::~cMenuCam()
@@ -1930,6 +1933,7 @@ cMenuCam::~cMenuCam()
ciEnquiry->Abort();
delete ciEnquiry;
free(input);
+ CamMenuIsOpen = false;
}
void cMenuCam::GenerateTitle(const char *s)
@@ -2075,6 +2079,11 @@ cOsdObject *CamControl(void)
return NULL;
}
+bool CamMenuActive(void)
+{
+ return CamMenuIsOpen;
+}
+
// --- cMenuRecording --------------------------------------------------------
class cMenuRecording : public cOsdMenu {
diff --git a/menu.h b/menu.h
index 5202dd7e..ba93c5d2 100644
--- a/menu.h
+++ b/menu.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.h 2.10 2012/06/09 12:12:43 kls Exp $
+ * $Id: menu.h 2.11 2012/06/13 11:23:11 kls Exp $
*/
#ifndef __MENU_H
@@ -187,6 +187,7 @@ public:
};
cOsdObject *CamControl(void);
+bool CamMenuActive(void);
class cMenuRecordingItem;
diff --git a/vdr.c b/vdr.c
index 86144c8c..c075dbeb 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* The project's page is at http://www.tvdr.de
*
- * $Id: vdr.c 2.36 2012/06/02 13:10:00 kls Exp $
+ * $Id: vdr.c 2.37 2012/06/13 11:28:41 kls Exp $
*/
#include <getopt.h>
@@ -570,7 +570,6 @@ int main(int argc, char *argv[])
int MaxLatencyTime = 0;
bool InhibitEpgScan = false;
bool IsInfoMenu = false;
- bool CheckHasProgramme = false;
cSkin *CurrentSkin = NULL;
// Load plugins:
@@ -761,7 +760,7 @@ int main(int argc, char *argv[])
// Make sure we have a visible programme in case device usage has changed:
if (!EITScanner.Active() && cDevice::PrimaryDevice()->HasDecoder() && !cDevice::PrimaryDevice()->HasProgramme()) {
static time_t lastTime = 0;
- if ((!Menu || CheckHasProgramme) && Now - lastTime > MINCHANNELWAIT) { // !Menu to avoid interfering with the CAM if a CAM menu is open
+ if (!CamMenuActive() && Now - lastTime > MINCHANNELWAIT) { // !CamMenuActive() to avoid interfering with the CAM if a CAM menu is open
cChannel *Channel = Channels.GetByNumber(cDevice::CurrentChannel());
if (Channel && (Channel->Vpid() || Channel->Apid(0) || Channel->Dpid(0))) {
if (cDevice::GetDeviceForTransponder(Channel, LIVEPRIORITY) && Channels.SwitchTo(Channel->Number())) // try to switch to the original channel...
@@ -774,7 +773,6 @@ int main(int argc, char *argv[])
}
lastTime = Now; // don't do this too often
LastTimerChannel = -1;
- CheckHasProgramme = false;
}
}
// Update the OSD size:
@@ -1140,7 +1138,6 @@ int main(int argc, char *argv[])
DELETE_MENU;
cControl::Shutdown();
Menu = new cMenuMain(osRecordings);
- CheckHasProgramme = true; // to have live tv after stopping replay with 'Back'
break;
case osReplay: DELETE_MENU;
cControl::Shutdown();