diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2005-11-27 15:57:03 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2005-11-27 15:57:03 +0100 |
commit | 41f718987d625d2938c6ed0827759b217fda63a2 (patch) | |
tree | 4e8c4ac750e83cc9bf49accbc92b5680ac5dd976 /skins.h | |
parent | 074de78f0430271e5c6e74057f2fc510b9618ac9 (diff) | |
download | vdr-41f718987d625d2938c6ed0827759b217fda63a2.tar.gz vdr-41f718987d625d2938c6ed0827759b217fda63a2.tar.bz2 |
Implemented message queueing1.3.37
Diffstat (limited to 'skins.h')
-rw-r--r-- | skins.h | 33 |
1 files changed, 32 insertions, 1 deletions
@@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skins.h 1.8 2005/05/15 14:41:41 kls Exp $ + * $Id: skins.h 1.9 2005/11/27 15:41:44 kls Exp $ */ #ifndef __SKINS_H @@ -16,6 +16,7 @@ #include "osd.h" #include "recording.h" #include "themes.h" +#include "thread.h" #include "tools.h" enum eMessageType { mtStatus = 0, mtInfo, mtWarning, mtError }; // will be used to calculate color offsets! @@ -298,6 +299,7 @@ class cSkins : public cList<cSkin> { private: cSkin *current; cSkinDisplayMessage *displayMessage; + cMutex queueMessageMutex; public: cSkins(void); ~cSkins(); @@ -312,6 +314,35 @@ public: ///< Displays the given message, either through a currently visible ///< display object that is capable of doing so, or by creating a ///< temporary cSkinDisplayMessage object. + ///< The return value is the key pressed by the user. If no user input + ///< has been received within Seconds (the default value of 0 results + ///< in the ///< value defined for "Message time" in the setup), kNone + ///< will be returned. + int QueueMessage(eMessageType Type, const char *s, int Seconds = 0, int Timeout = 0); + ///< Like Message(), but this function may be called from a background + ///< thread. The given message is put into a queue and the main program + ///< loop will display it as soon as this is suitable. If Timeout is 0, + ///< QueueMessage() returns immediately and the return value will be kNone. + ///< If a positive Timeout is given, the thread will wait at most the given + ///< number of seconds for the message to be actually displayed (note that + ///< the user may currently be doing something that doesn't allow for + ///< queued messages to be displayed immediately). If the timeout expires + ///< and the message hasn't been displayed yet, the return value is -1 + ///< and the message will be removed from the queue without being displayed. + ///< Positive values of Timeout are only allowed for background threads. + ///< If QueueMessage() is called from the foreground thread with a Timeout + ///< greater than 0, the call is ignored and nothing is displayed. + ///< Queued messages will be displayed in the sequence they have been + ///< put into the queue, so messages from different threads may appear + ///< mingled. If a particular thread queues a message with a Timeout of + ///< -1, and the previous message from the same thread also had a Timeout + ///< of -1, only the last message will be displayed. This can be used for + ///< progress displays, where only the most recent message is actually + ///< important. + ///< Type may only be mtInfo, mtWarning or mtError. A call with mtStatus + ///< will be ignored, as will be one with an empty message. + void ProcessQueuedMessages(void); + ///< Processes the first queued message, if any. void Flush(void); ///< Flushes the currently active cSkinDisplay, if any. }; |