[vdr] [RFC] Shutdown rewrite for 1.5.x

Marko Mäkelä marko.makela at hut.fi
Sat Jan 13 21:28:23 CET 2007


On Wed, Jan 10, 2007 at 02:28:24PM +0100, Udo Richter wrote:
> Hi list,
> 
> I've finished a second version of the shutdown rewrite. This time, there 
> are two patches available, one for VDR 1.5.0, and one with slight 
> changes for 1.4.x.
> 
> http://www.udo-richter.de/vdr/patches.html#shutdown
> http://www.udo-richter.de/vdr/patches.en.html#shutdown

I had a short look at this patch:
http://www.udo-richter.de/vdr/files/vdr-1.4.5-shutdown-rewrite-0.2.diff

A minor cosmetic thing: the '#' of pre-processor directives should always
be located at the first column of the line.  You can add spaces after
the '#' if you want to indent the directives.  This is probably not a
problem, if VDR is only compiled with GCC.  At least the compiler on
SGI IRIX (r.i.p.) would choke on such code.

A more important suggestion: Could you please add a notification method
to status.h for notifying plugins whether VDR is currently in
interactive mode?  This would be useful for at least these three
plugins: softdevice, subtitles, and relay (my own plugin for controlling
a solid-state relay that powers the display on or off).  Here are the
relevant chunks from my suspend patch
<http://www.iki.fi/~msmakela/software/vdr/#suspend>, which is to my
knowledge included in some VDR distributions:

diff -pu vdr-1.4.0/status.h vdr-1.4.0-suspend/status.h
--- vdr-1.4.0/status.h	2005-12-31 17:15:25.000000000 +0200
+++ vdr-1.4.0-suspend/status.h	2006-05-01 21:42:34.000000000 +0300
@@ -44,6 +44,9 @@ protected:
   virtual void SetAudioChannel(int AudioChannel) {}
                // The audio channel has been set to the given value.
                // 0=stereo, 1=left, 2=right, -1=no information
                // available.
+  virtual void SetSuspend(bool Suspend) {}
+               // Suspend or resume audio/video playback.
+               // true=suspend, false=resume.
   virtual void OsdClear(void) {}
                // The OSD has been cleared.
   virtual void OsdTitle(const char *Title) {}
@@ -77,6 +80,7 @@ public:
   static void MsgSetVolume(int Volume, bool Absolute);
   static void MsgSetAudioTrack(int Index, const char * const *Tracks);
   static void MsgSetAudioChannel(int AudioChannel);
+  static void MsgSetSuspend(bool Suspend);
   static void MsgOsdClear(void);
   static void MsgOsdTitle(const char *Title);
   static void MsgOsdStatusMessage(const char *Message);

I'd suggest a method SetInteractive(bool Interactive).  When VDR is
in non-interactive mode, the display would be powered off and the
software decoding of video would be suspended.  For full-featured
cards, the suspendoutput plugin could perhaps be adapted:
http://users.tkk.fi/~phintuka/vdr/vdr-suspendoutput/

If you implemented the method, it would make my vdr-suspend patch
unnecessary.  I could then try your patch and adapt the three
plugins I use (relay, softdevice, and subtitles, in that order).

	Marko



More information about the vdr mailing list