Fixed checking for a visible live programme in case a menu or the channel display is currently open

This commit is contained in:
Klaus Schmidinger 2012-06-13 11:35:16 +02:00
parent a8dc76a8ac
commit 2a18fb9687
4 changed files with 16 additions and 7 deletions

View File

@ -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.

11
menu.c
View File

@ -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 {

3
menu.h
View File

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

7
vdr.c
View File

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