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()); +                              }                             }                          }                       } | 
