diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2004-02-15 14:31:53 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2004-02-15 14:31:53 +0100 |
commit | 0a3f7e7ca23078eab860032350d61ceb2a8ab50c (patch) | |
tree | c8f98b6050c9b2f9f7d90c2d9e281b8805295ea0 | |
parent | 955d5eb012227fa6fa70f784d967e831a55e5c1b (diff) | |
download | vdr-0a3f7e7ca23078eab860032350d61ceb2a8ab50c.tar.gz vdr-0a3f7e7ca23078eab860032350d61ceb2a8ab50c.tar.bz2 |
Limited automatic retuning to devices that actually provide the transponder
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | menu.c | 14 | ||||
-rw-r--r-- | menu.h | 4 | ||||
-rw-r--r-- | vdr.c | 8 |
4 files changed, 17 insertions, 11 deletions
@@ -2669,3 +2669,5 @@ Video Disk Recorder Revision History happen on my system, this has not been explicitly tested. - Adapted the 'sky' plugin to use the actual channel IDs, and to fetch EPG data from www.bleb.org. +- Limited automatic retuning to devices that actually provide the transponder + (necessary for the 'sky' plugin). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.285 2004/02/13 13:23:07 kls Exp $ + * $Id: menu.c 1.286 2004/02/15 14:29:53 kls Exp $ */ #include "menu.h" @@ -3241,7 +3241,7 @@ void cRecordControls::Stop(cDevice *Device) { for (int i = 0; i < MAXRECORDCONTROLS; i++) { if (RecordControls[i]) { - if (RecordControls[i]->Uses(Device)) { + if (RecordControls[i]->Device() == Device) { isyslog("stopping recording on DVB device %d due to higher priority", Device->CardIndex() + 1); RecordControls[i]->Stop(true); } @@ -3320,10 +3320,12 @@ void cRecordControls::ChannelDataModified(cChannel *Channel) for (int i = 0; i < MAXRECORDCONTROLS; i++) { if (RecordControls[i]) { if (RecordControls[i]->Timer() && RecordControls[i]->Timer()->Channel() == Channel) { - isyslog("stopping recording due to modification of channel %d", Channel->Number()); - RecordControls[i]->Stop(true); - // This will restart the recording, maybe even from a different - // device in case conditional access has changed. + if (RecordControls[i]->Device()->ProvidesTransponder(Channel)) { // avoids retune on devices that don't really access the transponder + isyslog("stopping recording due to modification of channel %d", Channel->Number()); + RecordControls[i]->Stop(true); + // This will restart the recording, maybe even from a different + // device in case conditional access has changed. + } } } } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.h 1.59 2004/01/04 11:01:13 kls Exp $ + * $Id: menu.h 1.60 2004/02/15 14:11:28 kls Exp $ */ #ifndef __MENU_H @@ -123,7 +123,7 @@ public: cRecordControl(cDevice *Device, cTimer *Timer = NULL, bool Pause = false); virtual ~cRecordControl(); bool Process(time_t t); - bool Uses(cDevice *Device) { return Device == device; } + cDevice *Device(void) { return device; } void Stop(bool KeepInstant = false); bool IsInstant(void) { return instantId; } const char *InstantId(void) { return instantId; } @@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/vdr * - * $Id: vdr.c 1.176 2004/02/13 13:13:13 kls Exp $ + * $Id: vdr.c 1.177 2004/02/15 14:29:30 kls Exp $ */ #include <getopt.h> @@ -526,8 +526,10 @@ int main(int argc, char *argv[]) cRecordControls::ChannelDataModified(Channel); if (Channel->Number() == cDevice::CurrentChannel()) { if (!cDevice::PrimaryDevice()->Replaying() || cTransferControl::ReceiverDevice()) { - isyslog("retuning due to modification of channel %d", Channel->Number()); - Channels.SwitchTo(Channel->Number()); + if (cDevice::ActualDevice()->ProvidesTransponder(Channel)) { // avoids retune on devices that don't really access the transponder + isyslog("retuning due to modification of channel %d", Channel->Number()); + Channels.SwitchTo(Channel->Number()); + } } } } |