summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY2
-rw-r--r--menu.c14
-rw-r--r--menu.h4
-rw-r--r--vdr.c8
4 files changed, 17 insertions, 11 deletions
diff --git a/HISTORY b/HISTORY
index dc639d7f..746e3608 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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).
diff --git a/menu.c b/menu.c
index 2ffa6d9f..790bb179 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 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.
+ }
}
}
}
diff --git a/menu.h b/menu.h
index 041d6f7c..6fe95408 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 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; }
diff --git a/vdr.c b/vdr.c
index 20315507..4782df9b 100644
--- a/vdr.c
+++ b/vdr.c
@@ -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());
+ }
}
}
}