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 @@ -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();