summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY4
-rw-r--r--cutter.c9
-rw-r--r--cutter.h5
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
diff --git a/HISTORY b/HISTORY
index 87894ea6..b7a56676 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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).
diff --git a/cutter.c b/cutter.c
index ff6b4edb..c1f49849 100644
--- a/cutter.c
+++ b/cutter.c
@@ -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;
diff --git a/cutter.h b/cutter.h
index afc5e935..59c44008 100644
--- a/cutter.h
+++ b/cutter.h
@@ -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;