Lucian Muresan wrote: > Hi, > > I'd like to provide a patch for VDR but would like to expose the rough > implementation idea and of course, the purpose, and therefore get an > opinion if it makes sense and last but not least, if it will be accepted. > > The need: > Let's assume the following usage scenario: I'm using VDR mostly as a > recording daemon on a FF-less system, therefore when I'm watching live > TV or recordings in VDR I have to use softdevice or vdr-xine. I'm always > loading the vdr-xine plugin when VDR is running as a service, to be able > to connect to it with df_xine. Until now I'm doing this step manually > (either starting vdr with the softdevice plugin, or starting df_xine to > let it display the VDR OSD and decode it's streams when VDR is already > running in deamon mode). Now I'd like to be able to start df_xine from > within Freevo ( > http://freevo.sourceforge.net/screenshots_blurr.html#freevo_ss1 ) which > already has a plugin for this, which is talking to VDR via SVDRP. > > The problem: > Because I sometimes shut down Freevo and let VDR just run in deamon > mode, and eventually start df_xine again manually this time, the VDR > deamon has to run with remotes enabled (I'm using LIRC and sometimes > keyboard). When Freevo is up, it's controlled by LIRC and/or keyboard, > too, and that's a conflict(*), I wouldn't even see what the keystrokes I > do for Freevo instruct VDR to do when not having it displayed in > df_xine, for example when doing other things than VDR in Freevo, like > watching movies or pictures, or listening to music(**), and even while > displaying VDR in df_xine invoked by Freevo, they would both react at > the same time directly to keystrokes. > > My proposal: > I thought I'd introduce a new SVDRP command which would enable/disable > all or just a specific remote, and therefore reset/set a disable-flag in > cRemote, which would cause the cRemote::Put(..) and > cRemote::PutMacro(..) methods return whithout executing their normal > code. Then I would disable my remotes in VDR via SVDRP when starting > df_xine from Freevo and let Freevo control VDR via SVDRP, and when > leaving df_xine I would re-enable them again. What do you think of this? > > Further implementation questions, if what way I described makes sense: > - What should the cRemote::Put(...) methods return when disabled, true > or false? > - at a first look, the disable flag could be checked only in bool > cRemote::Put(eKeys Key, bool AtFront) which actually does the work in > the other 2 methods, too, would it have side-effects if implemented that > way (I think not really)? > > So, should I go this way? cRemote::Put(eKeys Key, bool AtFront) is a _static_ function, so in there you have no way of knowing which remote control has received the key. So this will only work if you intend to _completely_ turn off _any_ remote control functionality. I would return 'true' in that case, because it simply disregards the key press and doesn't mean to cause any error handling. As for the SVDRP command: I suggest you write a plugin that implements the command(s) you think you need. This is way too specific to justify a native SVDRP command. Klaus