From 8c63e0fd967a7ac037872ca5af378dc92f0410fa Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 27 Nov 2005 18:00:00 +0100 Subject: =?UTF-8?q?Version=201.3.37=20-=20Added=20compiler=20options=20"-f?= =?UTF-8?q?PIC=20-g"=20to=20all=20plugins=20(thanks=20to=20Rolf=20Ahrenber?= =?UTF-8?q?g).=20-=20Fixed=20initializing=20the=20day=20index=20when=20edi?= =?UTF-8?q?ting=20the=20weekday=20parameter=20of=20a=20=20=20repeating=20t?= =?UTF-8?q?imer=20(thanks=20to=20Marco=20Schl=C3=BC=C3=9Fler).=20-=20No=20?= =?UTF-8?q?longer=20removing=20superfluous=20hyphens=20in=20EPG=20data=20-?= =?UTF-8?q?=20would=20become=20too=20=20=20language=20dependent=20to=20han?= =?UTF-8?q?dle=20all=20kinds=20of=20exceptions.=20-=20Modified=20switching?= =?UTF-8?q?=20to=20Dolby=20Digital=20audio=20in=20live=20mode,=20if=20the?= =?UTF-8?q?=20driver=20=20=20and=20firmware=20can=20handle=20live=20DD=20w?= =?UTF-8?q?ithout=20the=20need=20of=20a=20Transfer=20Mode=20(thanks=20=20?= =?UTF-8?q?=20to=20Werner=20Fink).=20Live=20DD=20mode=20requires=20a=20ful?= =?UTF-8?q?l=20featured=20DVB=20card=20and=20a=20=20=20LinuxDVB=20driver?= =?UTF-8?q?=20with=20firmware=20version=200x2622=20or=20higher.=20Older=20?= =?UTF-8?q?versions=20will=20=20=20use=20Transfer=20Mode=20just=20like=20b?= =?UTF-8?q?efore.=20-=20Implemented=20handling=20of=20the=20"CA=20PMT=20Re?= =?UTF-8?q?ply"=20for=20CAMs=20(thanks=20to=20Marco=20=20=20Schl=C3=BC?= =?UTF-8?q?=C3=9Fler=20for=20figuring=20out=20some=20obscure=20length=20by?= =?UTF-8?q?tes=20in=20the=20CA=20PMT=20Reply=20=20=20data=20of=20AlphaCryp?= =?UTF-8?q?t=20CAMs).=20-=20Some=20preparations=20for=20being=20able=20to?= =?UTF-8?q?=20record=20several=20encrypted=20channels=20from=20=20=20the?= =?UTF-8?q?=20same=20transponder=20at=20the=20same=20time=20(or=20record?= =?UTF-8?q?=20and=20view=20different=20encrypted=20=20=20channels),=20prov?= =?UTF-8?q?ided=20the=20CAM=20in=20use=20can=20handle=20this.=20This=20is?= =?UTF-8?q?=20work=20in=20progress=20=20=20and=20isn't=20actively=20used,?= =?UTF-8?q?=20yet.=20-=20Fixed=20SetProgress()=20in=20the=20'skincurses'?= =?UTF-8?q?=20plugin=20in=20case=20Total=20is=200=20(reported=20=20=20by?= =?UTF-8?q?=20Stefan=20Huelswitt).=20-=20Added=20a=20copy=20constructor=20?= =?UTF-8?q?to=20cString=20and=20fixed=20its=20assignment=20operator=20=20?= =?UTF-8?q?=20(thanks=20to=20Holger=20Brunn).=20-=20The=20new=20function?= =?UTF-8?q?=20Skins.QueueMessage()=20can=20be=20called=20from=20a=20backgr?= =?UTF-8?q?ound=20thread=20=20=20to=20queue=20a=20message=20for=20display.?= =?UTF-8?q?=20See=20VDR/skins.h=20for=20details.=20-=20The=20SVDRP=20comma?= =?UTF-8?q?nd=20MESG=20uses=20the=20new=20message=20queueing=20facility,?= =?UTF-8?q?=20so=20MESG=20=20=20commands=20may=20now=20be=20executed=20at?= =?UTF-8?q?=20any=20time,=20and=20the=20message=20will=20be=20displayed=20?= =?UTF-8?q?=20=20(no=20more=20"pending=20message").?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skins.h | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'skins.h') diff --git a/skins.h b/skins.h index 5fc6344..90ed0c3 100644 --- a/skins.h +++ b/skins.h @@ -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 { 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. }; -- cgit v1.2.3