mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Moved the call to cPlugin::Start() further up in vdr.c, to make sure it gets called before trying to learn the keys
This commit is contained in:
parent
1c1fdc5a3f
commit
6702994adc
@ -467,6 +467,8 @@ Oliver Endriss <o.endriss@gmx.de>
|
|||||||
the Main menu
|
the Main menu
|
||||||
for reporting a bug in setting the PCR-PID in case it is equal to one of the other
|
for reporting a bug in setting the PCR-PID in case it is equal to one of the other
|
||||||
PIDs
|
PIDs
|
||||||
|
for reporting a problem with cPlugin::Start() being called after trying to learn
|
||||||
|
the remote control keys
|
||||||
|
|
||||||
Reinhard Walter Buchner <rw.buchner@freenet.de>
|
Reinhard Walter Buchner <rw.buchner@freenet.de>
|
||||||
for adding some satellites to 'sources.conf'
|
for adding some satellites to 'sources.conf'
|
||||||
|
4
HISTORY
4
HISTORY
@ -2143,10 +2143,12 @@ Video Disk Recorder Revision History
|
|||||||
- Changed C++ style comments in libdtv into C style to avoid warnings in gcc 3.x
|
- Changed C++ style comments in libdtv into C style to avoid warnings in gcc 3.x
|
||||||
(thanks to Andreas Schultz).
|
(thanks to Andreas Schultz).
|
||||||
|
|
||||||
2003-05-12: Version 1.1.32
|
2003-05-16: Version 1.1.32
|
||||||
|
|
||||||
- Removed a faulty parameter initialization in menu.c (thanks to Lauri Tischler for
|
- Removed a faulty parameter initialization in menu.c (thanks to Lauri Tischler for
|
||||||
reporting this one).
|
reporting this one).
|
||||||
- Re-implemented the WaitForPut/WaitForGet stuff in cRingBuffer, since some plugins
|
- Re-implemented the WaitForPut/WaitForGet stuff in cRingBuffer, since some plugins
|
||||||
actually need this. By default the buffer does not wait; if a plugin needs the
|
actually need this. By default the buffer does not wait; if a plugin needs the
|
||||||
waiting functionality it can call the new SetTimeouts() function.
|
waiting functionality it can call the new SetTimeouts() function.
|
||||||
|
- Moved the call to cPlugin::Start() further up in vdr.c, to make sure it gets
|
||||||
|
called before trying to learn the keys (problem reported by Oliver Endriss).
|
||||||
|
38
PLUGINS.html
38
PLUGINS.html
@ -21,18 +21,18 @@ VDR program and present itself to the user.
|
|||||||
The <i>internal</i> interface provides the plugin code access to VDR's internal data
|
The <i>internal</i> interface provides the plugin code access to VDR's internal data
|
||||||
structures and allows it to hook itself into specific areas to perform special actions.
|
structures and allows it to hook itself into specific areas to perform special actions.
|
||||||
<p>
|
<p>
|
||||||
<!--X1.1.15--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
<!--X1.1.17--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||||
Important modifications introduced in version 1.1.15 are marked like this.
|
|
||||||
<!--X1.1.15--></td></tr></table>
|
|
||||||
<!--X1.1.17--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
|
||||||
Important modifications introduced in version 1.1.17 are marked like this.
|
Important modifications introduced in version 1.1.17 are marked like this.
|
||||||
<!--X1.1.17--></td></tr></table>
|
<!--X1.1.17--></td></tr></table>
|
||||||
<!--X1.1.27--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
<!--X1.1.27--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||||
Important modifications introduced in version 1.1.27 are marked like this.
|
Important modifications introduced in version 1.1.27 are marked like this.
|
||||||
<!--X1.1.27--></td></tr></table>
|
<!--X1.1.27--></td></tr></table>
|
||||||
<!--X1.1.31--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
<!--X1.1.31--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||||
Important modifications introduced in version 1.1.31 are marked like this.
|
Important modifications introduced in version 1.1.31 are marked like this.
|
||||||
<!--X1.1.31--></td></tr></table>
|
<!--X1.1.31--></td></tr></table>
|
||||||
|
<!--X1.1.32--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||||
|
Important modifications introduced in version 1.1.32 are marked like this.
|
||||||
|
<!--X1.1.32--></td></tr></table>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<h1>Table Of Contents</h1>
|
<h1>Table Of Contents</h1>
|
||||||
@ -284,7 +284,7 @@ The <b>constructor</b> shall initialize any member variables the plugin defines,
|
|||||||
<b>must not access any global structures of VDR</b>.
|
<b>must not access any global structures of VDR</b>.
|
||||||
It also must not create any threads or other large data structures. These things
|
It also must not create any threads or other large data structures. These things
|
||||||
are done in the
|
are done in the
|
||||||
<!--X1.1.31--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
<!--X1.1.31--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||||
<a href="#Getting started"><tt>Initialize()</tt></a> or
|
<a href="#Getting started"><tt>Initialize()</tt></a> or
|
||||||
<a href="#Getting started"><tt>Start()</tt></a>
|
<a href="#Getting started"><tt>Start()</tt></a>
|
||||||
<!--X1.1.31--></td></tr></table>
|
<!--X1.1.31--></td></tr></table>
|
||||||
@ -460,18 +460,20 @@ thread of its own), or wants to make use of <a href="#Internationalization">inte
|
|||||||
it needs to implement one of the functions
|
it needs to implement one of the functions
|
||||||
|
|
||||||
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
||||||
<!--X1.1.31--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%><pre>
|
<!--X1.1.31--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%><pre>
|
||||||
virtual bool Initialize(void);
|
virtual bool Initialize(void);
|
||||||
<!--X1.1.31--></pre></td></tr></table>
|
<!--X1.1.31--></pre></td></tr></table>
|
||||||
virtual bool Start(void);
|
virtual bool Start(void);
|
||||||
</pre></td></tr></table><p>
|
</pre></td></tr></table><p>
|
||||||
|
|
||||||
which are called once for each plugin at program startup.
|
which are called once for each plugin at program startup.
|
||||||
<!--X1.1.31--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
<!--X1.1.31--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||||
|
<!--X1.1.32--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||||
The difference between these two functions is that <tt>Initialize()</tt> is
|
The difference between these two functions is that <tt>Initialize()</tt> is
|
||||||
called early at program startup, while <tt>Start()</tt> is called after everything
|
called early at program startup, while <tt>Start()</tt> is called after the primary
|
||||||
else has been set up, right before the main program loop is entered. Inside the
|
device and user interface has been set up, but before the main program loop is entered.
|
||||||
<tt>Start()</tt> function of any plugin it is guaranteed that the <tt>Initialize()</tt>
|
<!--X1.1.32--></td></tr></table>
|
||||||
|
Inside the <tt>Start()</tt> function of any plugin it is guaranteed that the <tt>Initialize()</tt>
|
||||||
functions of all plugins have already been called. For many plugins it probably
|
functions of all plugins have already been called. For many plugins it probably
|
||||||
doesn't matter which of these functions they implement, but it may be of importance
|
doesn't matter which of these functions they implement, but it may be of importance
|
||||||
for, e.g., plugins that implement devices. Such plugins should create their cDevice
|
for, e.g., plugins that implement devices. Such plugins should create their cDevice
|
||||||
@ -527,7 +529,7 @@ in the call to VDR.
|
|||||||
|
|
||||||
If the user selects the main menu entry of a plugin, VDR calls the function
|
If the user selects the main menu entry of a plugin, VDR calls the function
|
||||||
|
|
||||||
<!--X1.1.17--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
<!--X1.1.17--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||||
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
||||||
virtual cOsdObject *MainMenuAction(void);
|
virtual cOsdObject *MainMenuAction(void);
|
||||||
</pre></td></tr></table><p>
|
</pre></td></tr></table><p>
|
||||||
@ -1044,7 +1046,6 @@ virtual void SetAudioTrack(int Index);
|
|||||||
</pre></td></tr></table><p>
|
</pre></td></tr></table><p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<!--X1.1.15--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
|
||||||
If there is an additional audio track that has to be replayed with external hardware,
|
If there is an additional audio track that has to be replayed with external hardware,
|
||||||
the player shall call its member function
|
the player shall call its member function
|
||||||
|
|
||||||
@ -1053,7 +1054,6 @@ void PlayAudio(const uchar *Data, int Length);
|
|||||||
</pre></td></tr></table><p>
|
</pre></td></tr></table><p>
|
||||||
|
|
||||||
where <tt>Data</tt> points to a complete audio PES packet of <tt>Length</tt> bytes.
|
where <tt>Data</tt> points to a complete audio PES packet of <tt>Length</tt> bytes.
|
||||||
<!--X1.1.15--></td></tr></table>
|
|
||||||
<p>
|
<p>
|
||||||
The second part needed here is a control object that receives user input from the main
|
The second part needed here is a control object that receives user input from the main
|
||||||
program loop and reacts on this by telling the player what to do:
|
program loop and reacts on this by telling the player what to do:
|
||||||
@ -1200,7 +1200,7 @@ a <tt>cDevice</tt>:
|
|||||||
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
||||||
cMyReceiver *Receiver = new cMyReceiver(123);
|
cMyReceiver *Receiver = new cMyReceiver(123);
|
||||||
|
|
||||||
<!--X1.1.31--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
<!--X1.1.31--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||||
cDevice::ActualDevice()->AttachReceiver(Receiver);
|
cDevice::ActualDevice()->AttachReceiver(Receiver);
|
||||||
<!--X1.1.31--></td></tr></table>
|
<!--X1.1.31--></td></tr></table>
|
||||||
</pre></td></tr></table><p>
|
</pre></td></tr></table><p>
|
||||||
@ -1372,7 +1372,7 @@ needed.
|
|||||||
<p>
|
<p>
|
||||||
<b>Initializing new devices</b>
|
<b>Initializing new devices</b>
|
||||||
<p>
|
<p>
|
||||||
<!--X1.1.31--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
<!--X1.1.31--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||||
A derived cDevice class shall implement a static function
|
A derived cDevice class shall implement a static function
|
||||||
in which it determines whether the necessary hardware to run this sort of
|
in which it determines whether the necessary hardware to run this sort of
|
||||||
device is actually present in this machine (or whatever other prerequisites
|
device is actually present in this machine (or whatever other prerequisites
|
||||||
@ -1391,7 +1391,6 @@ shut down (delete) all devices when the program terminates. It is therefore
|
|||||||
important that the devices are created on the heap, using the <tt>new</tt>
|
important that the devices are created on the heap, using the <tt>new</tt>
|
||||||
operator!
|
operator!
|
||||||
|
|
||||||
<!--X1.1.15--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
|
||||||
<a name="Dolby Digital"><hr><h2>Dolby Digital</h2>
|
<a name="Dolby Digital"><hr><h2>Dolby Digital</h2>
|
||||||
|
|
||||||
<center><i><b>"The stereo effect may only be experienced if stereo equipment is used!"</b></i></center><p>
|
<center><i><b>"The stereo effect may only be experienced if stereo equipment is used!"</b></i></center><p>
|
||||||
@ -1434,7 +1433,6 @@ will need to copy it for later processing in your thread.
|
|||||||
<p>
|
<p>
|
||||||
The <tt>Mute()</tt> and <tt>Clear()</tt> functions will be called whenever the audio shall
|
The <tt>Mute()</tt> and <tt>Clear()</tt> functions will be called whenever the audio shall
|
||||||
be muted, or any buffered data shall be cleared, respectively.
|
be muted, or any buffered data shall be cleared, respectively.
|
||||||
<!--X1.1.15--></td></tr></table>
|
|
||||||
|
|
||||||
<a name="Remote Control"><hr><h2>Remote Control</h2>
|
<a name="Remote Control"><hr><h2>Remote Control</h2>
|
||||||
|
|
||||||
@ -1502,7 +1500,7 @@ the incoming data (by calling your <tt>Action()</tt> function).
|
|||||||
In case you need to do any other setup steps, like opening a file or initializing
|
In case you need to do any other setup steps, like opening a file or initializing
|
||||||
member variables, you should do so before calling <tt>Start()</tt>.
|
member variables, you should do so before calling <tt>Start()</tt>.
|
||||||
<p>
|
<p>
|
||||||
<!--X1.1.27--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
<!--X1.1.27--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||||
If your remote control for some reason can't work (maybe because it was unable to
|
If your remote control for some reason can't work (maybe because it was unable to
|
||||||
open some file handle it requires) it can implement the virtual function
|
open some file handle it requires) it can implement the virtual function
|
||||||
|
|
||||||
|
6
config.h
6
config.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.h 1.158 2003/05/11 13:45:44 kls Exp $
|
* $Id: config.h 1.159 2003/05/16 12:27:58 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -19,8 +19,8 @@
|
|||||||
#include "device.h"
|
#include "device.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
#define VDRVERSION "1.1.31"
|
#define VDRVERSION "1.1.32"
|
||||||
#define VDRVERSNUM 10131 // Version * 10000 + Major * 100 + Minor
|
#define VDRVERSNUM 10132 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
#define MAXPRIORITY 99
|
#define MAXPRIORITY 99
|
||||||
#define MAXLIFETIME 99
|
#define MAXLIFETIME 99
|
||||||
|
12
vdr.c
12
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.cadsoft.de/people/kls/vdr
|
* The project's page is at http://www.cadsoft.de/people/kls/vdr
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 1.154 2003/05/11 08:39:09 kls Exp $
|
* $Id: vdr.c 1.155 2003/05/16 12:11:45 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -399,6 +399,11 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
Interface = new cInterface(SVDRPport);
|
Interface = new cInterface(SVDRPport);
|
||||||
|
|
||||||
|
// Start plugins:
|
||||||
|
|
||||||
|
if (!PluginManager.StartPlugins())
|
||||||
|
return 2;
|
||||||
|
|
||||||
// Remote Controls:
|
// Remote Controls:
|
||||||
#if defined(REMOTE_RCU)
|
#if defined(REMOTE_RCU)
|
||||||
new cRcuRemote("/dev/ttyS1");
|
new cRcuRemote("/dev/ttyS1");
|
||||||
@ -444,11 +449,6 @@ int main(int argc, char *argv[])
|
|||||||
alarm(WatchdogTimeout); // Initial watchdog timer start
|
alarm(WatchdogTimeout); // Initial watchdog timer start
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start plugins:
|
|
||||||
|
|
||||||
if (!PluginManager.StartPlugins())
|
|
||||||
return 2;
|
|
||||||
|
|
||||||
// Main program loop:
|
// Main program loop:
|
||||||
|
|
||||||
cOsdObject *Menu = NULL;
|
cOsdObject *Menu = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user