diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2005-02-06 18:00:00 +0100 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2005-02-06 18:00:00 +0100 |
commit | 4d477cd144c8df2b3791b60f15337448292066fe (patch) | |
tree | a5eca7e54ae14fa8a16b28f02a9b472b2c7023ea /plugin.c | |
parent | e36fe18c483b8e520752f61975e44ddd0317a332 (diff) | |
download | vdr-patch-lnbsharing-4d477cd144c8df2b3791b60f15337448292066fe.tar.gz vdr-patch-lnbsharing-4d477cd144c8df2b3791b60f15337448292066fe.tar.bz2 |
Version 1.3.20vdr-1.3.20
- Fixed displaying the "Audio" menu with the "Green" button from the "Main" menu
in case there is only one audio track (thanks to Sascha Volkenandt for reporting
this one).
- Now setting primaryDevice = NULL before deleting the devices in cDevice::Shutdown()
to avoid problems in case other threads access it (thanks to Wolfgang Rohdewald for
pointing this out).
- Fixed a buffer overflow in case a station defines all 32 audio PIDs (thanks to
Christian Jacobsen for reporting this one).
- Fixed masking SubStreamType in cDevice::PlayPesPacket() (thanks to Werner Fink
for pointing out this one).
- The new function cPlugin::Stop() shall be used to stop any background activities
of a plugin. Previously this was done in the plugin's destructor, but it is
better to do this in a dedicated function that can be called early when shutting
down.
- Moved the call to SetAudioChannel(0) into cDevice::ClrAvailableTracks() to have it
executed also when starting a replay.
- Completed the Danish OSD texts (thanks to Mogens Elneff).
- Completed the French OSD texts (thanks to Olivier Jacques).
- The new setup option "OSD/Channel info time" can be used to define the time after
which the channel display is removed if no key has been pressed (thanks to
Olivier Jacques).
- Modified cDolbyRepacker to make sure PES packets don't exceed the requested length
(thanks to Reinhard Nissl).
- Fixed several memory leaks that were introduced through the use of cString (thanks
to Stefan Huelswitt for reporting these).
- Added CMD_SPU_CHG_COLCON to cDvbSpuDecoder::setTime() (thanks to Marco Schlüßler).
- Making sure the current audio track is actually one of the ones available in a
recording (thanks to Sascha Volkenandt for reporting a problem when starting
replay of a recording that has no Dolby Digital audio after switching to a channel
that has DD and selecting the DD audio track).
- Removed 'flags' from tTrackId (thought we would need this, but apparently we don't).
- Making sure the "Mute" and "Volume+/-" keys don't interfere with digital audio.
- Fixed the "pre 1.3.19" compatibility mode for old Dolby Digital recordings (thanks
to Werner Fink for pointing out that this can be triggered in the default branch).
- Calling pesAssembler->Reset() in cDevice::AttachPlayer() to avoid problems with
residual data in replay and Transfer Mode (thanks to Werner Fink for pointing this
out).
- Added MPEG1 replay capability to cPesAssembler (thanks to Stefan Huelswitt).
Diffstat (limited to 'plugin.c')
-rw-r--r-- | plugin.c | 30 |
1 files changed, 23 insertions, 7 deletions
@@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: plugin.c 1.12 2004/12/19 12:05:28 kls Exp $ + * $Id: plugin.c 1.13 2005/01/30 14:05:20 kls Exp $ */ #include "plugin.h" @@ -28,6 +28,7 @@ char *cPlugin::configDirectory = NULL; cPlugin::cPlugin(void) { name = NULL; + started = false; } cPlugin::~cPlugin() @@ -60,6 +61,10 @@ bool cPlugin::Start(void) return true; } +void cPlugin::Stop(void) +{ +} + void cPlugin::Housekeeping(void) { } @@ -322,6 +327,7 @@ bool cPluginManager::StartPlugins(void) Setup.OSDLanguage = Language; if (!p->Start()) return false; + p->started = true; } } return true; @@ -366,15 +372,25 @@ cPlugin *cPluginManager::GetPlugin(const char *Name) return NULL; } -void cPluginManager::Shutdown(bool Log) +void cPluginManager::StopPlugins(void) +{ + for (cDll *dll = dlls.Last(); dll; dll = dlls.Prev(dll)) { + cPlugin *p = dll->Plugin(); + if (p && p->started) { + isyslog("stopping plugin: %s", p->Name()); + p->Stop(); + p->started = false; + } + } +} + +void cPluginManager::Shutdown(void) { cDll *dll; while ((dll = dlls.Last()) != NULL) { - if (Log) { - cPlugin *p = dll->Plugin(); - if (p) - isyslog("stopping plugin: %s", p->Name()); - } + cPlugin *p = dll->Plugin(); + if (p) + isyslog("deleting plugin: %s", p->Name()); dlls.Del(dll); } } |