diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2005-08-15 18:00:00 +0200 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2005-08-15 18:00:00 +0200 |
commit | ddd1e13e53c4970058884e2af31c2681617e7bf3 (patch) | |
tree | 672e7c0a5ddf85a40015104a2906e77fe60beccc /thread.h | |
parent | 4c5de2888331fb4372eba0b0f4364fd9a0197b17 (diff) | |
download | vdr-patch-lnbsharing-ddd1e13e53c4970058884e2af31c2681617e7bf3.tar.gz vdr-patch-lnbsharing-ddd1e13e53c4970058884e2af31c2681617e7bf3.tar.bz2 |
Version 1.3.29vdr-1.3.29
- Fixed a race condition in cTransfer (thanks to Klaus Heppenheimer for reporting this one).
In doing so, the 'active' variables used by the actual derived cThread classes
have been replaced by the cThread::Running() function.
Plugin authors may want to check their derived cThread classes and replace any 'active'
variables the same way as, for instance, done in transfer.c.
- Fixed handling EPG data for time shifted events (thanks to Marco Schlüßler).
- Increased the default value for 'Min. user inactivity' to 300 minutes (suggested
by Helmut Auer).
- Now storing the channel id in the info.vdr file even if there is no EPG info
available (thanks to Andreas Brachold for reporting that there are empty info.vdr
files created in that case).
- Added some 'mkdir -p' to the Makefile's 'install' target (thanks to Wayne Keer).
- Changed the title of the recording info menu (thanks to Rolf Ahrenberg).
- Fixed handling the frame number display if '7' is pressed before the first editing
mark, or '9' after the last one (thanks to Thomas Günther).
- Now discarding any previous numerical input to switch channels if Up, Down, Channel+,
Channel-, Left or Right is pressed (thanks to Wolfgang Rohdewald for reporting a
problem with this).
- Pressing Ok while entering a channel number now immediately switches to that
channel, without waiting for further input.
- Avoiding unnecessary OSD draw operations caused by the audio track description
display in the ST:TNG skin's channel display (thanks to Oliver Endriss for reporting
this).
- Removed the VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES stuff from
cDvbDevice::StillPicture(), since apparently the VIDEO_STILLPICTURE call works.
Diffstat (limited to 'thread.h')
-rw-r--r-- | thread.h | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: thread.h 1.28 2005/05/29 11:31:24 kls Exp $ + * $Id: thread.h 1.30 2005/08/14 11:21:48 kls Exp $ */ #ifndef __THREAD_H @@ -75,6 +75,7 @@ public: class cThread { friend class cThreadLock; private: + bool active; bool running; pthread_t childTid; cMutex mutex; @@ -86,13 +87,30 @@ protected: void Lock(void) { mutex.Lock(); } void Unlock(void) { mutex.Unlock(); } virtual void Action(void) = 0; + ///< A derived cThread class must implement the code it wants to + ///< execute as a separate thread in this function. If this is + ///< a loop, it must check Running() repeatedly to see whether + ///< it's time to stop. + bool Running(void) { return running; } + ///< Returns false if a derived cThread object shall leave its Action() + ///< function. void Cancel(int WaitSeconds = 0); + ///< Cancels the thread by first setting 'running' to false, so that + ///< the Action() loop can finish in an orderly fashion and then waiting + ///< up to WaitSeconds seconds for the thread to actually end. If the + ///< thread doesn't end by itself, it is killed. public: cThread(const char *Description = NULL); + ///< Creates a new thread. + ///< If Description is present, a log file entry will be made when + ///< the thread starts and stops. The Start() function must be called + ///< to actually start the thread. virtual ~cThread(); void SetDescription(const char *Description, ...); bool Start(void); + ///< Actually starts the thread. bool Active(void); + ///< Checks whether the thread is still alive. static bool EmergencyExit(bool Request = false); }; |