diff --git a/CONTRIBUTORS b/CONTRIBUTORS index ce083f4a..0f276c9a 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2550,6 +2550,8 @@ Markus Ehrnsperger for reporting a possible crash in cIndexFile::GetClosestIFrame() for reporting a missing 'const' in cTimers::GetTimerForEvent() for suggesting to add a chapter about locking to PLUGINS.html + for fixing unnecessary interruption of ongoing recordings if timers avoided the + transfer mode receiver device Werner Färber for reporting a bug in handling the cPluginManager::Active() result when pressing diff --git a/HISTORY b/HISTORY index 1a786ab0..998a7ef5 100644 --- a/HISTORY +++ b/HISTORY @@ -9848,3 +9848,5 @@ Video Disk Recorder Revision History deadlock when moving recordings between volumes. - Fixed a possible crash if an editing process is canceled while the edited recording is being replayed (new solution). +- Fixed unnecessary interruption of ongoing recordings if timers avoided the transfer + mode receiver device (thanks to Markus Ehrnsperger). diff --git a/device.c b/device.c index 9d70d20c..89d62c8c 100644 --- a/device.c +++ b/device.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: device.c 5.6 2022/12/07 09:38:05 kls Exp $ + * $Id: device.c 5.7 2023/02/16 14:53:38 kls Exp $ */ #include "device.h" @@ -305,8 +305,8 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView imp <<= 1; imp |= !device[i]->Receiving() && (device[i] != cTransferControl::ReceiverDevice() || device[i]->IsPrimaryDevice()) || ndr; // use receiving devices if we don't need to detach existing receivers, but avoid primary device in local transfer mode imp <<= 1; imp |= device[i]->Receiving(); // avoid devices that are receiving imp <<= 5; imp |= GetClippedNumProvidedSystems(5, device[i]) - 1; // avoid cards which support multiple delivery systems - imp <<= 1; imp |= device[i] == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device imp <<= 8; imp |= device[i]->Priority() - IDLEPRIORITY; // use the device with the lowest priority (- IDLEPRIORITY to assure that values -100..99 can be used) + imp <<= 1; imp |= device[i] == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device imp <<= 8; imp |= ((NumUsableSlots && !HasInternalCam) ? SlotPriority[j] : IDLEPRIORITY) - IDLEPRIORITY;// use the CAM slot with the lowest priority (- IDLEPRIORITY to assure that values -100..99 can be used) imp <<= 1; imp |= ndr; // avoid devices if we need to detach existing receivers imp <<= 1; imp |= (NumUsableSlots || InternalCamNeeded) ? 0 : device[i]->HasCi(); // avoid cards with Common Interface for FTA channels