Mailing List archive

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

[vdr] Re: Message does not clear after being displayed



"C.Y.M." wrote:
> 
> Can anyone tell me why this snip of code does not clear in the OSD after it
> has been displayed?

The call to

  Skins.Message(mtStatus, tr("scanning recordings..."));

sets the given message, either in an already opened display object,
or it creates a temporary message display object. The

  Skins.Flush();

is superfluous, because cSkins::Message() already does this.

Since you have used 'mtStatus', the cSkins::Message() returns immediately
and leaves the message on the screen until a later explicit call to

  Skins.Message(mtStatus, NULL);

which clears the status message and, if this was a temporyr display
object, also deletes that one.

If you want to display a message that automatically disappears after
the call, you should use either 'mtInfo' or 'mtError'.

>  I can still see parts of "scanning recordings..."
> behind the color coded function keys in the menu.

This message is no longer issued since version 1.3.11, because the list
of recordings is now kept in memory. Besides, a problem with status messages
not being properly cleared has been fixed in version 1.3.12.

>  I would assume that
> "Skins.Flush()" is supposed to remove the message,

No, Skins.Flush() just makes sure any modifications to the current OSD content
are written into the actual OSD and are displayed on the screen.

Klaus

> but it doesn't.  Thanks.
> 
> #if VDRVERSNUM >= 10307
>   Skins.Message(mtStatus, tr("scanning recordings..."));
>   Skins.Flush();
> #else
>   Interface->Status(tr("scanning recordings..."));
>   Interface->Flush();
> #endif




Home | Main Index | Thread Index