diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2015-02-07 14:29:14 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2015-02-07 14:29:14 +0100 |
commit | 18e7903b78f856d9959257bc88b307b80c460681 (patch) | |
tree | febf5c714a0f0987fffae08bf8da28b34cdd5759 /recording.h | |
parent | 5d8302b147aeb43d53f26ebd98e728df4adebe46 (diff) | |
download | vdr-18e7903b78f856d9959257bc88b307b80c460681.tar.gz vdr-18e7903b78f856d9959257bc88b307b80c460681.tar.bz2 |
Fixed a deadlock in accessing marks
Diffstat (limited to 'recording.h')
-rw-r--r-- | recording.h | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/recording.h b/recording.h index f6eaa19b..876e0b25 100644 --- a/recording.h +++ b/recording.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.h 3.7 2015/02/06 15:17:04 kls Exp $ + * $Id: recording.h 3.8 2015/02/07 14:29:14 kls Exp $ */ #ifndef __RECORDING_H @@ -369,26 +369,21 @@ public: void Align(void); void Sort(void); void Add(int Position); + ///< If this cMarks object is used by multiple threads, the caller must Lock() + ///< it before calling Add() and Unlock() it afterwards. The same applies to + ///< calls to Del(), or any of the functions that return a "cMark *", in case + ///< an other thread might modifiy the list while the returned pointer is + ///< considered valid. cMark *Get(int Position); - ///< If this cMarks object is used by multiple threads, the caller must hold a lock - ///< on this object as long as it handles the returned pointer. cMark *GetPrev(int Position); - ///< If this cMarks object is used by multiple threads, the caller must hold a lock - ///< on this object as long as it handles the returned pointer. cMark *GetNext(int Position); - ///< If this cMarks object is used by multiple threads, the caller must hold a lock - ///< on this object as long as it handles the returned pointer. cMark *GetNextBegin(cMark *EndMark = NULL); ///< Returns the next "begin" mark after EndMark, skipping any marks at the ///< same position as EndMark. If EndMark is NULL, the first actual "begin" ///< will be returned (if any). - ///< If this cMarks object is used by multiple threads, the caller must hold a lock - ///< on this object as long as it handles the returned pointer. cMark *GetNextEnd(cMark *BeginMark); ///< Returns the next "end" mark after BeginMark, skipping any marks at the ///< same position as BeginMark. - ///< If this cMarks object is used by multiple threads, the caller must hold a lock - ///< on this object as long as it handles the returned pointer. int GetNumSequences(void); ///< Returns the actual number of sequences to be cut from the recording. ///< If there is only one actual "begin" mark, and it is positioned at index |