Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: No osd available in Plugins-Start()



Achim Tuffentsammer wrote:
Hello

just a minor issue.
When the remote-plugins fails to open its input devices
(in its Start() method) it tries to display an error message
on the OSD. This crashes vdr since at this point there's no osd
or skin available:

#0 0x080cfb2e in cSkins::Message (this=0x8197fa8, Type=mtError,
s=0xbffff5c0 "/dev/input/event0: Keine Berechtigung", Seconds=0)
at skins.h:307
#1 0xb7d07058 in cPluginRemote::Start ()
from ./PLUGINS/lib/libvdr-remote.so.1.3.18
#2 0x080bed7b in cPluginManager::StartPlugins (this=0xbffff880)
at plugin.c:323
#3 0x080e5b0d in main (argc=136027000, argv=0x0) at vdr.c:465


Quote from PLUGINS.html

Start() is called after the primary device and user interface has been set up

from vdr.c

// Start plugins:

if (!PluginManager.StartPlugins())
EXIT(2);

// Skins:


Change the order here and everything works fine.
So what's the best solution - adjust remote-plugin,
vdr.c or PLUGINS.html ?

Rg. Achim
Well, the description is from a time before there were skins.
Now we're facing a chicken-and-egg situation, because plugins
can implement skins, so before the plugins have been started,
there are no skins, yet (except for the default skins, which could
already be there, but that's probably not what a user who has
a skin that's implemented by a plugin wants).

So I guess the fix will be to create the default skins before
starting the plugins, have every skin set itself as the "current"
skin (so if the skin plugin is loaded before the remote plugin,
the error message will be given using the correct skin) and
calling Skins.SetCurrent() and cThemes::Load() after the plugins
have been started.

Klaus




Home | Main Index | Thread Index