[vdr] ERROR: attempt to open OSD while it is already open - using dummy OSD!

2008-03-16 Thread Wolfgang Rohdewald
start the osddemo plugin and then

echo -e "MESG hallo\nQUIT" |nc localhost 2001

gives me the above error message with vdr 1.5.16

and the message will never be visible.

how can a plugin like a music player handle this
correctly? It always has an open osd, but of course
hides it with Hide(). 

But vdr does not ask the plugin to hide before trying
to show the message, so I am getting the same error
message in that situation. I see no way to get rid of it.

As a possible solution, can the player control somehow
tell vdr that it can handle the message display itself?
Something like

class cControl : public cOsdObject {
public:
  ...
  virtual bool DisplayMessage(...) { return false };

so if a player is active, its DisplayMessage is called.
Only when it returns false, vdr then tries to display
the message. 

-- 
Wolfgang

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] ERROR: attempt to open OSD while it is already open - using dummy OSD!

2008-03-22 Thread Klaus Schmidinger
On 03/17/08 01:35, Wolfgang Rohdewald wrote:
> start the osddemo plugin and then
> 
> echo -e "MESG hallo\nQUIT" |nc localhost 2001
> 
> gives me the above error message with vdr 1.5.16
> 
> and the message will never be visible.
> 
> how can a plugin like a music player handle this
> correctly? It always has an open osd, but of course
> hides it with Hide(). 
> 
> But vdr does not ask the plugin to hide before trying
> to show the message, so I am getting the same error
> message in that situation. I see no way to get rid of it.
> 
> As a possible solution, can the player control somehow
> tell vdr that it can handle the message display itself?
> Something like
> 
> class cControl : public cOsdObject {
> public:
>   ...
>   virtual bool DisplayMessage(...) { return false };
> 
> so if a player is active, its DisplayMessage is called.
> Only when it returns false, vdr then tries to display
> the message. 

See cSkinDisplayReplay::SetMessage().

Klaus

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] ERROR: attempt to open OSD while it is already open - using dummy OSD!

2008-03-28 Thread Wolfgang Rohdewald
On Samstag, 22. März 2008, Klaus Schmidinger wrote:
> > But vdr does not ask the plugin to hide before trying
> > to show the message, so I am getting the same error
> > message in that situation. I see no way to get rid of it.
> > 
> > As a possible solution, can the player control somehow
> > tell vdr that it can handle the message display itself?
> > Something like
> > 
> > class cControl : public cOsdObject {
> > public:
> >   ...
> >   virtual bool DisplayMessage(...) { return false };
> > 
> > so if a player is active, its DisplayMessage is called.
> > Only when it returns false, vdr then tries to display
> > the message. 
> 
> See cSkinDisplayReplay::SetMessage().

the unpatched vdr-1.5.16 does not contain that. Are you sure you
are using an unpatched vdr? (Sorry, could not resist ;-) )

I do have
void cSkinClassicDisplayMessage::SetMessage(eMessageType Type, const char *Text)

but this plugin does not use skins at all for its player osd.
Just cOsdProvider::NewOsd(). So I dont see how SetMessage() could 
help me.

-- 
Wolfgang

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] ERROR: attempt to open OSD while it is already open - using dummy OSD!

2008-03-28 Thread Klaus Schmidinger
On 03/28/08 08:14, Wolfgang Rohdewald wrote:
> On Samstag, 22. März 2008, Klaus Schmidinger wrote:
>>> But vdr does not ask the plugin to hide before trying
>>> to show the message, so I am getting the same error
>>> message in that situation. I see no way to get rid of it.
>>>
>>> As a possible solution, can the player control somehow
>>> tell vdr that it can handle the message display itself?
>>> Something like
>>>
>>> class cControl : public cOsdObject {
>>> public:
>>>   ...
>>>   virtual bool DisplayMessage(...) { return false };
>>>
>>> so if a player is active, its DisplayMessage is called.
>>> Only when it returns false, vdr then tries to display
>>> the message. 
>> See cSkinDisplayReplay::SetMessage().
> 
> the unpatched vdr-1.5.16 does not contain that. Are you sure you
> are using an unpatched vdr? (Sorry, could not resist ;-) )
> 
> I do have
> void cSkinClassicDisplayMessage::SetMessage(eMessageType Type, const char 
> *Text)

So I omitted the parameters, big deal ;-)

> but this plugin does not use skins at all for its player osd.
> Just cOsdProvider::NewOsd(). So I dont see how SetMessage() could 
> help me.

You could set your OSDs "level" to something greater than 0.
Then it will be pushed into background when a higher level
OSD comes up, and restored after that.

Klaus

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr