Hi,

Reinhard Nissl schrieb:

> Well, I was in contact with Marco already and attached you'll
> find a minimalistic change which reports "channel not available".
> Now VDR should already be able to kick a low priority DVB-S
> recording (or transfer thread) from a DVB-S2 device.

The previous patch was wrong. Only DVB-S2 devices "could" provide
channels. The revised patch works now as expected.

> Still missing is to prefer DVB-S devices for DVB-S recordings so
> that DVB-S2 devices remain available for DVB-S2 recordings of
> same priority.

Still to do.

> The patch is incremental to the original dvbs2 patch from
> yesterday, i. e. you can simply apply it to your already patched VDR.

Bye.
-- 
Dipl.-Inform. (FH) Reinhard Nissl
mailto:[EMAIL PROTECTED]
--- ../vdr-1.5.12-dvbs2-other/dvbdevice.c	2008-01-01 22:55:18.000000000 +0100
+++ dvbdevice.c	2008-01-05 00:44:24.000000000 +0100
@@ -798,7 +798,13 @@ bool cDvbDevice::ProvidesSource(int Sour
 
 bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
 {
-  return ProvidesSource(Channel->Source()) && (!cSource::IsSat(Channel->Source()) || !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization()));
+  if (!ProvidesSource(Channel->Source()))
+     return false; // doesn't provide source
+  if (!cSource::IsSat(Channel->Source()))
+     return true; // source is sufficient for non sat
+  if (!(frontendType & Channel->ModulationSystem()))
+     return false; // requires modulation system which frontend doesn't provide
+  return !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization());
 }
 
 bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers) const
@@ -807,7 +813,7 @@ bool cDvbDevice::ProvidesChannel(const c
   bool hasPriority = Priority < 0 || Priority > this->Priority();
   bool needsDetachReceivers = false;
 
-  if (ProvidesSource(Channel->Source())) {
+  if (ProvidesTransponder(Channel)) {
      result = hasPriority;
      if (Priority >= 0 && Receiving(true)) {
         if (dvbTuner->IsTunedTo(Channel)) {
_______________________________________________
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr

Reply via email to