diff options
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 4 | ||||
-rw-r--r-- | cutter.c | 9 | ||||
-rw-r--r-- | cutter.h | 5 |
4 files changed, 15 insertions, 4 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 023aac1f..79fc76f0 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -984,6 +984,7 @@ Andreas Mair <andreas@vdr-developer.org> option ':groups' is given for fixing handling 3 and 4 byte UTF-8 symbols in Utf8CharGet() for fixing initializing the timer's flags in the cTimer copy constructor + for reporting a crash in case CutRecording() is called from a plugin Olivier Jacques <jacquesolivier@hotmail.com>) for translating OSD texts to the French language @@ -6465,7 +6465,7 @@ Video Disk Recorder Revision History the number keys can be used to enter characters in a text input field (suggested by Stefan Huskamp). -2010-06-13: Version 1.7.16 +2010-08-29: Version 1.7.16 - Updated the Italian OSD texts (thanks to Diego Pierotto). - Added missing Dtypes for ATSC (thanks to Alex Lasnier). @@ -6474,3 +6474,5 @@ Video Disk Recorder Revision History - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). - Fixed the array size of Atypes in cPatFilter::Process() (thanks to Rolf Ahrenberg). +- Added locking to the cCutter functions to avoid a crash in case CutRecording() + is called from a plugin (reported by Andreas Mair). @@ -4,13 +4,12 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: cutter.c 2.4 2010/01/02 13:08:08 kls Exp $ + * $Id: cutter.c 2.5 2010/08/29 13:35:18 kls Exp $ */ #include "cutter.h" #include "recording.h" #include "remux.h" -#include "thread.h" #include "videodir.h" // --- cCuttingThread -------------------------------------------------------- @@ -194,6 +193,7 @@ void cCuttingThread::Action(void) // --- cCutter --------------------------------------------------------------- +cMutex cCutter::mutex; char *cCutter::editedVersionName = NULL; cCuttingThread *cCutter::cuttingThread = NULL; bool cCutter::error = false; @@ -201,6 +201,7 @@ bool cCutter::ended = false; bool cCutter::Start(const char *FileName) { + cMutexLock MutexLock(&mutex); if (!cuttingThread) { error = false; ended = false; @@ -231,6 +232,7 @@ bool cCutter::Start(const char *FileName) void cCutter::Stop(void) { + cMutexLock MutexLock(&mutex); bool Interrupted = cuttingThread && cuttingThread->Active(); const char *Error = cuttingThread ? cuttingThread->Error() : NULL; delete cuttingThread; @@ -247,6 +249,7 @@ void cCutter::Stop(void) bool cCutter::Active(void) { + cMutexLock MutexLock(&mutex); if (cuttingThread) { if (cuttingThread->Active()) return true; @@ -263,6 +266,7 @@ bool cCutter::Active(void) bool cCutter::Error(void) { + cMutexLock MutexLock(&mutex); bool result = error; error = false; return result; @@ -270,6 +274,7 @@ bool cCutter::Error(void) bool cCutter::Ended(void) { + cMutexLock MutexLock(&mutex); bool result = ended; ended = false; return result; @@ -4,16 +4,19 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: cutter.h 2.1 2010/01/02 12:09:54 kls Exp $ + * $Id: cutter.h 2.2 2010/08/29 13:32:33 kls Exp $ */ #ifndef __CUTTER_H #define __CUTTER_H +#include "thread.h" + class cCuttingThread; class cCutter { private: + static cMutex mutex; static char *editedVersionName; static cCuttingThread *cuttingThread; static bool error; |