[vdr] receive data with low prio, so user-action can detach the
receiver
Patrick Fischer
patrick_fischer at gmx.de
Tue Jan 3 16:57:45 CET 2006
I have written a quick and dirty patch to build my requested function.
It is too dirty to use it. It only work in the case you use always the
transfermode.
But now I can show how it should work.
--- vdr-1.3.37_orig/device.c 2005-11-26 13:56:09.000000000 +0100
+++ vdr-1.3.37/device.c 2006-01-03 16:54:18.000000000 +0100
@@ -588,7 +588,23 @@
// use the card that actually can receive it and transfer data from
there:
if (NeedsTransferMode) {
- cDevice *CaDevice = GetDevice(Channel, 0);
+ bool ntd;
+ cDevice *CaDevice = GetDevice(Channel, 0, &ntd);
+ if (ntd){//detach all receivers from device
+ dsyslog("need to detach all receivers from device");
+ for (int i = 0; i < MAXRECEIVERS; i++) {
+ // CaDevice->receiver[i]->Detach();
+ if (CaDevice->receiver[i]){
+ dsyslog("%d will be detached",i);
+ CaDevice->receiver[i]->Detach();
+ //CaDevice->receiver[i]->Activate(false);
+ //CaDevice->receiver[i] = NULL;
+ //CaDevice->receiver[i]->device = NULL;
+ //for (int n = 0; n < CaDevice->receiver[i]->numPids; n++)
+ // DelPid(CaDevice->receiver[i]->pids[n]);
+ }
+ }
+ }
if (CaDevice && CanReplay()) {
cStatus::MsgChannelSwitch(this, 0); // only report status if we
are actually going to switch the channel
if (CaDevice->SetChannel(Channel, false) == scrOk) // calling
SetChannel() directly, not SwitchChannel()!
More information about the vdr
mailing list