summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Gmeiner <christian.gmeiner@gmail.com>2010-03-03 20:49:30 +0100
committerChristian Gmeiner <christian.gmeiner@gmail.com>2010-03-03 20:49:30 +0100
commitcf802dcabc8388df1519dbe10d8f8a247fd9fe72 (patch)
treed0ce9143f3fd706132ec6bc92f82fdc45d9df787
parenta0e20d647c1c5b00ab01ba9a8b06d736992d2256 (diff)
downloadvdr-plugin-dxr3-cf802dcabc8388df1519dbe10d8f8a247fd9fe72.tar.gz
vdr-plugin-dxr3-cf802dcabc8388df1519dbe10d8f8a247fd9fe72.tar.bz2
Add mutex to protect play methods and setplaymode method
-rw-r--r--dxr3device.c6
-rw-r--r--dxr3device.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/dxr3device.c b/dxr3device.c
index bcbf70b..938388a 100644
--- a/dxr3device.c
+++ b/dxr3device.c
@@ -118,6 +118,8 @@ bool cDxr3Device::CanReplay() const
bool cDxr3Device::SetPlayMode(ePlayMode PlayMode)
{
+ cMutexLock l(&mutex);
+
dsyslog("[dxr3-device] setting playmode %d", PlayMode);
uint32_t val;
@@ -216,6 +218,8 @@ bool cDxr3Device::Poll(cPoller &Poller, int TimeoutMs)
int cDxr3Device::PlayVideo(const uchar *Data, int Length)
{
+ cMutexLock l(&mutex);
+
cDxr3PesFrame frame;
frame.parse(Data, Length);
uint32_t pts = frame.GetPts();
@@ -246,6 +250,8 @@ int cDxr3Device::PlayVideo(const uchar *Data, int Length)
int cDxr3Device::PlayAudio(const uchar *Data, int Length, uchar Id)
{
+ cMutexLock l(&mutex);
+
cDxr3PesFrame frame;
frame.parse(Data, Length);
diff --git a/dxr3device.h b/dxr3device.h
index 49cf003..b056d08 100644
--- a/dxr3device.h
+++ b/dxr3device.h
@@ -107,6 +107,7 @@ private:
void playBlackFrame();
void playSilentAudio();
+ cMutex mutex;
uchar *silentAudio;
cDxr3AudioDecoder *aDecoder;
cDxr3SpuDecoder* spuDecoder;