Klaus Schmidinger wrote:
syrius.ml@no-log.org wrote:
Anssi Hannula anssi.hannula@gmail.com writes:
in cDevice::GetDevice (device.c): imp <<= 1; imp |= !device[i]->Receiving() || ndr;
This is the problem. Devices in transfer-mode return false from device->Receiving(), so the impact gets increased even with already tuned devices.
Attached is a patch that takes transfer-moded devices into account. Please try it.
it seems it corrects it.
Can you please test whether this also works with
imp <<= 1; imp |= !device[i]->Receiving(true) || ndr;
instead of
imp <<= 1; imp |= !device[i]->Receiving() && device[i] != cTransferControl::ReceiverDevice() || ndr;
@Anssi: is there a particular reason why you have limited this to devices in Transfer-Mode? With Receiving(true) it would check if there is _any_ receiver attached to that device. This would also cover other streaming clients.
Not really, I just didn't think of Receiving(true) at the time :/ Yep, it is probably better to use Receiving(true), so that all priority -1 receivers will match.
Note that streaming clients are already caught with Receiving() as afaik their priority is >= 0, so this modification will only affect transfer-mode and other receivers with priority -1.