mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Introduced cPlugin::Initialize()
This commit is contained in:
parent
aaeaf4582d
commit
dc8fd12f91
@ -200,6 +200,7 @@ Andreas Schultz <aschultz@warp10.net>
|
|||||||
for suggesting a Make.config file
|
for suggesting a Make.config file
|
||||||
for making EIT filtering use masks to reduce the number of filters
|
for making EIT filtering use masks to reduce the number of filters
|
||||||
for suggesting to remove the Mute() call from cDvbDevice::StillPicture()
|
for suggesting to remove the Mute() call from cDvbDevice::StillPicture()
|
||||||
|
for suggesting to separate the startup of a plugin into an "early" and a "late" phase
|
||||||
|
|
||||||
Aaron Holtzman
|
Aaron Holtzman
|
||||||
for writing 'ac3dec'
|
for writing 'ac3dec'
|
||||||
|
7
HISTORY
7
HISTORY
@ -2108,3 +2108,10 @@ Video Disk Recorder Revision History
|
|||||||
(thanks to Carsten Siebholz).
|
(thanks to Carsten Siebholz).
|
||||||
- The red ("Record") and yellow ("Pause") button in the "Main" menu are no longer
|
- The red ("Record") and yellow ("Pause") button in the "Main" menu are no longer
|
||||||
available when replaying.
|
available when replaying.
|
||||||
|
|
||||||
|
2003-05-09: Version 1.1.31
|
||||||
|
|
||||||
|
- Introduced the new function cPlugin::Initialize(), in order to be able to separate
|
||||||
|
the startup of a plugin into an "early" (Initialize()) and "late" (Start()) phase
|
||||||
|
(suggested by Andreas Schultz). Plugin authors should please read the section
|
||||||
|
about "Getting started" in PLUGINS.html and adapt their code if applicable.
|
||||||
|
67
PLUGINS.html
67
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.14--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
<!--X1.1.15--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||||
Important modifications introduced in version 1.1.14 are marked like this.
|
|
||||||
<!--X1.1.14--></td></tr></table>
|
|
||||||
<!--X1.1.15--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
|
||||||
Important modifications introduced in version 1.1.15 are marked like this.
|
Important modifications introduced in version 1.1.15 are marked like this.
|
||||||
<!--X1.1.15--></td></tr></table>
|
<!--X1.1.15--></td></tr></table>
|
||||||
<!--X1.1.17--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
<!--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=#FF0000> </td><td width=100%>
|
<!--X1.1.27--><table width=100%><tr><td bgcolor=#AA0000> </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%>
|
||||||
|
Important modifications introduced in version 1.1.31 are marked like this.
|
||||||
|
<!--X1.1.31--></td></tr></table>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<h1>Table Of Contents</h1>
|
<h1>Table Of Contents</h1>
|
||||||
@ -283,7 +283,12 @@ virtual ~cPlugin();
|
|||||||
The <b>constructor</b> shall initialize any member variables the plugin defines, but
|
The <b>constructor</b> shall initialize any member variables the plugin defines, but
|
||||||
<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 <a href="#Getting started"><tt>Start()</tt></a> function later.
|
are done in the
|
||||||
|
<!--X1.1.31--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||||
|
<a href="#Getting started"><tt>Initialize()</tt></a> or
|
||||||
|
<a href="#Getting started"><tt>Start()</tt></a>
|
||||||
|
<!--X1.1.31--></td></tr></table>
|
||||||
|
function later.
|
||||||
Constructing a plugin object shall not have any side effects or produce any output,
|
Constructing a plugin object shall not have any side effects or produce any output,
|
||||||
since VDR, for instance, has to create the plugin objects in order to get their
|
since VDR, for instance, has to create the plugin objects in order to get their
|
||||||
command line help - and after that immediately destroys them again.
|
command line help - and after that immediately destroys them again.
|
||||||
@ -452,13 +457,28 @@ be shorter than 80 characters.
|
|||||||
|
|
||||||
If a plugin implements a function that runs in the background (presumably in a
|
If a plugin implements a function that runs in the background (presumably in a
|
||||||
thread of its own), or wants to make use of <a href="#Internationalization">internationalization</a>,
|
thread of its own), or wants to make use of <a href="#Internationalization">internationalization</a>,
|
||||||
it needs to implement the function
|
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>
|
||||||
|
virtual bool Initialize(void);
|
||||||
|
<!--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 is 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%>
|
||||||
|
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
|
||||||
|
else has been set up, right before the main program loop is entered. 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
|
||||||
|
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
|
||||||
|
derived objects in <tt>Initialize()</tt>, so that other plugins can use them in their
|
||||||
|
<tt>Start()</tt> functions.
|
||||||
|
<!--X1.1.31--></td></tr></table>
|
||||||
|
<p>
|
||||||
Inside this function the plugin must set up everything necessary to perform
|
Inside this function the plugin must set up everything necessary to perform
|
||||||
its task. This may, for instance, be a thread that collects data from the DVB
|
its task. This may, for instance, be a thread that collects data from the DVB
|
||||||
stream, which is later presented to the user via a function that is available
|
stream, which is later presented to the user via a function that is available
|
||||||
@ -467,10 +487,11 @@ from the main menu.
|
|||||||
A return value of <i>false</i> indicates that something has gone wrong and the
|
A return value of <i>false</i> indicates that something has gone wrong and the
|
||||||
plugin will not be able to perform its task. In that case, the plugin should
|
plugin will not be able to perform its task. In that case, the plugin should
|
||||||
write a proper error message to the log file. The first plugin that returns
|
write a proper error message to the log file. The first plugin that returns
|
||||||
<i>false</i> from its <tt>Start()</tt> function will cause VDR to exit.
|
<i>false</i> from its <tt>Initialize()</tt> or <tt>Start()</tt> function will cause
|
||||||
|
VDR to exit.
|
||||||
<p>
|
<p>
|
||||||
If the plugin doesn't implement any background functionality or internationalized
|
If the plugin doesn't implement any background functionality or internationalized
|
||||||
texts, it doesn't need to implement this function.
|
texts, it doesn't need to implement either of these functions.
|
||||||
|
|
||||||
<a name="Main menu entry"><hr><h2>Main menu entry</h2>
|
<a name="Main menu entry"><hr><h2>Main menu entry</h2>
|
||||||
|
|
||||||
@ -506,7 +527,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=#AA0000> </td><td width=100%>
|
<!--X1.1.17--><table width=100%><tr><td bgcolor=#00AA00> </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>
|
||||||
@ -759,7 +780,8 @@ void RegisterI18n(const tI18nPhrase * const Phrases);
|
|||||||
|
|
||||||
to register them with VDR's internationalization mechanism.
|
to register them with VDR's internationalization mechanism.
|
||||||
<p>
|
<p>
|
||||||
The call to this function must be done in the <a href="#Getting started"><tt>Start()</tt></a> function of the plugin:
|
The call to this function must be done in the <a href="#Getting started"><tt>Initialize()</tt></a>
|
||||||
|
or <a href="#Getting started"><tt>Start()</tt></a> function of the plugin:
|
||||||
|
|
||||||
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
||||||
const tI18nPhrase Phrases[] = {
|
const tI18nPhrase Phrases[] = {
|
||||||
@ -1022,7 +1044,7 @@ 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=#00AA00> </td><td width=100%>
|
<!--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
|
||||||
|
|
||||||
@ -1303,9 +1325,7 @@ The functions to implement replaying capabilites are
|
|||||||
|
|
||||||
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
||||||
virtual bool HasDecoder(void) const;
|
virtual bool HasDecoder(void) const;
|
||||||
<!--X1.1.14--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
|
||||||
virtual bool CanReplay(void) const;
|
virtual bool CanReplay(void) const;
|
||||||
<!--X1.1.14--></td></tr></table>
|
|
||||||
virtual bool SetPlayMode(ePlayMode PlayMode);
|
virtual bool SetPlayMode(ePlayMode PlayMode);
|
||||||
virtual void TrickSpeed(int Speed);
|
virtual void TrickSpeed(int Speed);
|
||||||
virtual void Clear(void);
|
virtual void Clear(void);
|
||||||
@ -1345,20 +1365,19 @@ 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%>
|
||||||
A derived cDevice class shall implement a static function
|
A derived cDevice class shall implement a static function
|
||||||
|
|
||||||
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
|
||||||
static bool Initialize(void);
|
|
||||||
</pre></td></tr></table><p>
|
|
||||||
|
|
||||||
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
|
||||||
might be important), and then creates as many device objects as necessary.
|
might be important), and then creates as many device objects as necessary.
|
||||||
See <tt>VDR/dvbdevice.c</tt> for the implementation of the <tt>cDvbDevice</tt>
|
See <tt>VDR/dvbdevice.c</tt> for the implementation of the <tt>cDvbDevice</tt>
|
||||||
initialize function.
|
initialize function.
|
||||||
<p>
|
<p>
|
||||||
A plugin that adds devices to a VDR instance shall call this initializing
|
A plugin that adds devices to a VDR instance shall call this
|
||||||
function from its <a href="#Getting started"><tt>Start()</tt></a> function.
|
function from its <a href="#Getting started"><tt>Initialize()</tt></a> function
|
||||||
|
to make sure other plugins that may need to have access to all available devices
|
||||||
|
will see them in their <a href="#Getting started"><tt>Start()</tt></a> function.
|
||||||
|
<!--X1.1.31--></td></tr></table>
|
||||||
<p>
|
<p>
|
||||||
Nothing needs to be done to shut down the devices. VDR will automatically
|
Nothing needs to be done to shut down the devices. VDR will automatically
|
||||||
shut down (delete) all devices when the program terminates. It is therefore
|
shut down (delete) all devices when the program terminates. It is therefore
|
||||||
@ -1476,7 +1495,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=#FF0000> </td><td width=100%>
|
<!--X1.1.27--><table width=100%><tr><td bgcolor=#AA0000> </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
|
||||||
|
|
||||||
|
@ -8,3 +8,7 @@ VDR Plugin 'sky' Revision History
|
|||||||
2002-12-13: Version 0.1.0
|
2002-12-13: Version 0.1.0
|
||||||
|
|
||||||
- Changed setting of CXX and CXXFLAGS variables in Makefile.
|
- Changed setting of CXX and CXXFLAGS variables in Makefile.
|
||||||
|
|
||||||
|
2003-05-09: Version 0.1.1
|
||||||
|
|
||||||
|
- Changed Start() to Initialize().
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: sky.c 1.2 2002/12/13 15:01:57 kls Exp $
|
* $Id: sky.c 1.3 2003/05/09 15:27:16 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
@ -14,7 +14,7 @@
|
|||||||
#include <vdr/plugin.h>
|
#include <vdr/plugin.h>
|
||||||
#include <vdr/sources.h>
|
#include <vdr/sources.h>
|
||||||
|
|
||||||
static const char *VERSION = "0.1.0";
|
static const char *VERSION = "0.1.1";
|
||||||
static const char *DESCRIPTION = "Sky Digibox interface";
|
static const char *DESCRIPTION = "Sky Digibox interface";
|
||||||
|
|
||||||
// --- cDigiboxDevice --------------------------------------------------------
|
// --- cDigiboxDevice --------------------------------------------------------
|
||||||
@ -186,7 +186,7 @@ public:
|
|||||||
virtual const char *Description(void) { return DESCRIPTION; }
|
virtual const char *Description(void) { return DESCRIPTION; }
|
||||||
virtual const char *CommandLineHelp(void);
|
virtual const char *CommandLineHelp(void);
|
||||||
virtual bool ProcessArgs(int argc, char *argv[]);
|
virtual bool ProcessArgs(int argc, char *argv[]);
|
||||||
virtual bool Start(void);
|
virtual bool Initialize(void);
|
||||||
virtual void Housekeeping(void);
|
virtual void Housekeeping(void);
|
||||||
virtual cMenuSetupPage *SetupMenu(void);
|
virtual cMenuSetupPage *SetupMenu(void);
|
||||||
virtual bool SetupParse(const char *Name, const char *Value);
|
virtual bool SetupParse(const char *Name, const char *Value);
|
||||||
@ -216,9 +216,9 @@ bool cPluginSky::ProcessArgs(int argc, char *argv[])
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cPluginSky::Start(void)
|
bool cPluginSky::Initialize(void)
|
||||||
{
|
{
|
||||||
// Start any background activities the plugin shall perform.
|
// Initialize any background activities the plugin shall perform.
|
||||||
new cDigiboxDevice;
|
new cDigiboxDevice;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
4
config.h
4
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.155 2003/04/27 15:56:04 kls Exp $
|
* $Id: config.h 1.156 2003/05/09 15:20:22 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -19,7 +19,7 @@
|
|||||||
#include "device.h"
|
#include "device.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
#define VDRVERSION "1.1.30"
|
#define VDRVERSION "1.1.31"
|
||||||
|
|
||||||
#define MAXPRIORITY 99
|
#define MAXPRIORITY 99
|
||||||
#define MAXLIFETIME 99
|
#define MAXLIFETIME 99
|
||||||
|
@ -12,7 +12,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: newplugin 1.14 2002/12/13 14:51:46 kls Exp $
|
# $Id: newplugin 1.15 2003/05/09 14:59:28 kls Exp $
|
||||||
|
|
||||||
$PLUGIN_NAME = $ARGV[0] || die "Usage: newplugin <name>\n";
|
$PLUGIN_NAME = $ARGV[0] || die "Usage: newplugin <name>\n";
|
||||||
|
|
||||||
@ -162,6 +162,7 @@ public:
|
|||||||
virtual const char *Description(void) { return DESCRIPTION; }
|
virtual const char *Description(void) { return DESCRIPTION; }
|
||||||
virtual const char *CommandLineHelp(void);
|
virtual const char *CommandLineHelp(void);
|
||||||
virtual bool ProcessArgs(int argc, char *argv[]);
|
virtual bool ProcessArgs(int argc, char *argv[]);
|
||||||
|
virtual bool Initialize(void);
|
||||||
virtual bool Start(void);
|
virtual bool Start(void);
|
||||||
virtual void Housekeeping(void);
|
virtual void Housekeeping(void);
|
||||||
virtual const char *MainMenuEntry(void) { return MAINMENUENTRY; }
|
virtual const char *MainMenuEntry(void) { return MAINMENUENTRY; }
|
||||||
@ -194,6 +195,12 @@ bool cPlugin${PLUGIN_CLASS}::ProcessArgs(int argc, char *argv[])
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cPlugin${PLUGIN_CLASS}::Initialize(void)
|
||||||
|
{
|
||||||
|
// Initialize any background activities the plugin shall perform.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool cPlugin${PLUGIN_CLASS}::Start(void)
|
bool cPlugin${PLUGIN_CLASS}::Start(void)
|
||||||
{
|
{
|
||||||
// Start any background activities the plugin shall perform.
|
// Start any background activities the plugin shall perform.
|
||||||
|
25
plugin.c
25
plugin.c
@ -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: plugin.c 1.8 2002/11/16 14:22:37 kls Exp $
|
* $Id: plugin.c 1.9 2003/05/09 15:01:26 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "plugin.h"
|
#include "plugin.h"
|
||||||
@ -50,6 +50,11 @@ bool cPlugin::ProcessArgs(int argc, char *argv[])
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cPlugin::Initialize(void)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool cPlugin::Start(void)
|
bool cPlugin::Start(void)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@ -293,6 +298,22 @@ bool cPluginManager::LoadPlugins(bool Log)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cPluginManager::InitializePlugins(void)
|
||||||
|
{
|
||||||
|
for (cDll *dll = dlls.First(); dll; dll = dlls.Next(dll)) {
|
||||||
|
cPlugin *p = dll->Plugin();
|
||||||
|
if (p) {
|
||||||
|
int Language = Setup.OSDLanguage;
|
||||||
|
Setup.OSDLanguage = 0; // the i18n texts are only available _after_ Start()
|
||||||
|
isyslog("initializing plugin: %s (%s): %s", p->Name(), p->Version(), p->Description());
|
||||||
|
Setup.OSDLanguage = Language;
|
||||||
|
if (!p->Initialize())
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool cPluginManager::StartPlugins(void)
|
bool cPluginManager::StartPlugins(void)
|
||||||
{
|
{
|
||||||
for (cDll *dll = dlls.First(); dll; dll = dlls.Next(dll)) {
|
for (cDll *dll = dlls.First(); dll; dll = dlls.Next(dll)) {
|
||||||
@ -300,7 +321,7 @@ bool cPluginManager::StartPlugins(void)
|
|||||||
if (p) {
|
if (p) {
|
||||||
int Language = Setup.OSDLanguage;
|
int Language = Setup.OSDLanguage;
|
||||||
Setup.OSDLanguage = 0; // the i18n texts are only available _after_ Start()
|
Setup.OSDLanguage = 0; // the i18n texts are only available _after_ Start()
|
||||||
isyslog("starting plugin: %s (%s): %s", p->Name(), p->Version(), p->Description());
|
isyslog("starting plugin: %s", p->Name());
|
||||||
Setup.OSDLanguage = Language;
|
Setup.OSDLanguage = Language;
|
||||||
if (!p->Start())
|
if (!p->Start())
|
||||||
return false;
|
return false;
|
||||||
|
4
plugin.h
4
plugin.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: plugin.h 1.5 2002/11/16 14:22:24 kls Exp $
|
* $Id: plugin.h 1.6 2003/05/09 14:57:55 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __PLUGIN_H
|
#ifndef __PLUGIN_H
|
||||||
@ -33,6 +33,7 @@ public:
|
|||||||
virtual const char *CommandLineHelp(void);
|
virtual const char *CommandLineHelp(void);
|
||||||
|
|
||||||
virtual bool ProcessArgs(int argc, char *argv[]);
|
virtual bool ProcessArgs(int argc, char *argv[]);
|
||||||
|
virtual bool Initialize(void);
|
||||||
virtual bool Start(void);
|
virtual bool Start(void);
|
||||||
virtual void Housekeeping(void);
|
virtual void Housekeeping(void);
|
||||||
|
|
||||||
@ -78,6 +79,7 @@ public:
|
|||||||
void SetDirectory(const char *Directory);
|
void SetDirectory(const char *Directory);
|
||||||
void AddPlugin(const char *Args);
|
void AddPlugin(const char *Args);
|
||||||
bool LoadPlugins(bool Log = false);
|
bool LoadPlugins(bool Log = false);
|
||||||
|
bool InitializePlugins(void);
|
||||||
bool StartPlugins(void);
|
bool StartPlugins(void);
|
||||||
void Housekeeping(void);
|
void Housekeeping(void);
|
||||||
static bool HasPlugins(void);
|
static bool HasPlugins(void);
|
||||||
|
23
vdr.c
23
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.152 2003/05/03 13:39:57 kls Exp $
|
* $Id: vdr.c 1.153 2003/05/09 14:14:13 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -355,9 +355,9 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
cDvbDevice::Initialize();
|
cDvbDevice::Initialize();
|
||||||
|
|
||||||
// Start plugins:
|
// Initialize plugins:
|
||||||
|
|
||||||
if (!PluginManager.StartPlugins())
|
if (!PluginManager.InitializePlugins())
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
// Primary device:
|
// Primary device:
|
||||||
@ -437,6 +437,18 @@ int main(int argc, char *argv[])
|
|||||||
if (WatchdogTimeout > 0)
|
if (WatchdogTimeout > 0)
|
||||||
if (signal(SIGALRM, Watchdog) == SIG_IGN) signal(SIGALRM, SIG_IGN);
|
if (signal(SIGALRM, Watchdog) == SIG_IGN) signal(SIGALRM, SIG_IGN);
|
||||||
|
|
||||||
|
// Watchdog:
|
||||||
|
|
||||||
|
if (WatchdogTimeout > 0) {
|
||||||
|
dsyslog("setting watchdog timer to %d seconds", WatchdogTimeout);
|
||||||
|
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;
|
||||||
@ -448,11 +460,6 @@ int main(int argc, char *argv[])
|
|||||||
bool ForceShutdown = false;
|
bool ForceShutdown = false;
|
||||||
bool UserShutdown = false;
|
bool UserShutdown = false;
|
||||||
|
|
||||||
if (WatchdogTimeout > 0) {
|
|
||||||
dsyslog("setting watchdog timer to %d seconds", WatchdogTimeout);
|
|
||||||
alarm(WatchdogTimeout); // Initial watchdog timer start
|
|
||||||
}
|
|
||||||
|
|
||||||
while (!Interrupted) {
|
while (!Interrupted) {
|
||||||
// Handle emergency exits:
|
// Handle emergency exits:
|
||||||
if (cThread::EmergencyExit()) {
|
if (cThread::EmergencyExit()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user