Blob Blame History Raw
From ad5448e5ad52d0084af3da9e57f9074df79b2db0 Mon Sep 17 00:00:00 2001
From: Johann Friedrichs <johann.friedrichs@web.de>
Date: Fri, 10 Dec 2021 21:20:29 +0100
Subject: Wrong dev selection for conflict check


diff --git a/conflictcheck.c b/conflictcheck.c
index f890e37..835346a 100644
--- a/conflictcheck.c
+++ b/conflictcheck.c
@@ -704,10 +704,11 @@ int cConflictCheck::GetDevice(cConflictCheckTimerObj* TimerObj, bool* NeedsDetac
                 imp |= devices[i].Receiving();
                 // do we have GetClippedNumProvidedSystems ???  uses MaxNumProvidedSystems in vdr since V1.7 !!
                 // but should not be needed
-                imp <<= 2;
-                imp |= devices[i].NumProvidedSystems(); // avoid cards which support multiple delivery systems
-                // imp <<= 2;
-                // imp |= GetClippedNumProvidedSystems(2, device[i]) - 1;  // avoid cards which support multiple delivery systems
+                imp <<= 5; // headroom for 31 Systems
+                int ProvidedSystems=devices[i].NumProvidedSystems();
+                if (ProvidedSystems <= 0)  // invalid return
+                    ProvidedSystems = 1;
+                imp |= std::min(ProvidedSystems,31); // avoid cards which support multiple delivery systems
                 // use the device with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
                 imp <<= 8;
                 imp |= std::min(std::max(devices[i].Priority() + MAXPRIORITY, 0), 0xFF);
-- 
cgit v0.10.2