Patrick Fischer schrieb:
Hello Klaus,
Wouldn't it be enough to simply give your receiver a priority of -2 (anything less than -1 would do)? That way any recording and even a Transfer Mode (which uses priority -1) could detach your receiver.
Klaus
now I have rewritten all my code. It seems to work.
this function finds a device which can provide a receiver without detach any receiver. (independent of the prio)
bool needdetach = false; bool found = false; for (int i=0; (i < (cDevice::NumDevices()-1) && !found);i++){ device = cDevice::GetDevice(i); if(device->ProvidesChannel(channel,PRIOCHANGECHANNEL,&needdetach) && !needdetach){ //device can Provide Channel and no receiver has to detach found = true; }else{ device = NULL; } } if(device){ device->SwitchChannel(channel,false); device->AttachReceiver(receiver); }
on the found device i can add myreceiver with Prio -2
additional I observe all myreceiver. If I want to add a new myreceiver to a device I will look at my local List, if I have already added a receiver to the transponder. If I found one I will add my receiver to the same device.
But now I need to recognize if vdr has detached my receiver. So I have used void cMyReciver::Activate(bool On) to recognize if it will detach. The Problem is, that it will only be detached if vdr will shutdown.
::Please read my last 2 Posts::
I have insert a detachAll() (without PID!!) to the cDevice. An insert a calling into cDvbDevice::SetChannelDevice so all receivers will be detached if a user switch the channel. There are two problems: -vdr will detachAll if the backgroundScanner(EITScanner??) do his job. -it is not necessary to detachAll if the User switch to a channel on same transponder
By the way, I don't understand why a receiver will not detached if the channel+PID don't exist anymore. Isn't that the case why I use Prios < -1?
I hope anybody can tell me some ideas.
I move in a circle...
Patrick