summaryrefslogtreecommitdiff
path: root/recording.h
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2015-02-07 14:29:14 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2015-02-07 14:29:14 +0100
commit18e7903b78f856d9959257bc88b307b80c460681 (patch)
treefebf5c714a0f0987fffae08bf8da28b34cdd5759 /recording.h
parent5d8302b147aeb43d53f26ebd98e728df4adebe46 (diff)
downloadvdr-18e7903b78f856d9959257bc88b307b80c460681.tar.gz
vdr-18e7903b78f856d9959257bc88b307b80c460681.tar.bz2
Fixed a deadlock in accessing marks
Diffstat (limited to 'recording.h')
-rw-r--r--recording.h17
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