diff options
Diffstat (limited to 'vdr.c')
-rw-r--r-- | vdr.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/vdr * - * $Id: vdr.c 1.312 2008/02/23 15:36:01 kls Exp $ + * $Id: vdr.c 1.313 2008/03/14 13:22:39 kls Exp $ */ #include <getopt.h> @@ -546,6 +546,7 @@ int main(int argc, char *argv[]) int MaxLatencyTime = 0; bool InhibitEpgScan = false; bool IsInfoMenu = false; + bool CheckHasProgramme = false; cSkin *CurrentSkin = NULL; // Load plugins: @@ -730,7 +731,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 && Now - lastTime > MINCHANNELWAIT) { // !Menu to avoid interfering with the CAM if a CAM menu is open + if ((!Menu || CheckHasProgramme) && Now - lastTime > MINCHANNELWAIT) { // !Menu 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))) { if (!Channels.SwitchTo(cDevice::CurrentChannel()) // try to switch to the original channel... @@ -739,6 +740,7 @@ int main(int argc, char *argv[]) } lastTime = Now; // don't do this too often LastTimerChannel = -1; + CheckHasProgramme = false; } } // Restart the Watchdog timer: @@ -1120,6 +1122,7 @@ 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(); |