Fixed a race condition in the SPU decoder

This commit is contained in:
Klaus Schmidinger 2005-11-05 12:12:18 +01:00
parent 9607fd33a0
commit 596e965a53
4 changed files with 8 additions and 3 deletions

View File

@ -1241,6 +1241,7 @@ Marco Schl
for fixing detecting short channel names for "Kabel Deutschland"
for reporting that the FATALERRNO macro needs to check for a non-zero errno value
for reporting missing mutex locks in cCiMenu::Abort() and cCiEnquiry::Abort()
for fixing a race condition in the SPU decoder
Jürgen Schmitz <j.schmitz@web.de>
for reporting a bug in displaying the current channel when switching via the SVDRP

View File

@ -3933,3 +3933,4 @@ Video Disk Recorder Revision History
commands of any length. The MAXPARSEBUFFER macros is now obsolete and has
been removed. If a plugin has used that macro, it should either define
a buffer size of its own, or use cReadLine when reading files.
- Fixed a race condition in the SPU decoder (thanks to Marco Schlüßler).

View File

@ -8,7 +8,7 @@
*
* parts of this file are derived from the OMS program.
*
* $Id: dvbspu.c 1.16 2005/11/04 14:19:07 kls Exp $
* $Id: dvbspu.c 1.17 2005/11/05 12:08:15 kls Exp $
*/
#include <assert.h>
@ -338,6 +338,7 @@ sDvbSpuRect cDvbSpuDecoder::CalcAreaSize(sDvbSpuRect fgsize, cBitmap *fgbmp, sDv
void cDvbSpuDecoder::Draw(void)
{
cMutexLock MutexLock(&mutex);
if (!spubmp) {
Hide();
return;
@ -390,6 +391,7 @@ void cDvbSpuDecoder::Draw(void)
void cDvbSpuDecoder::Hide(void)
{
cMutexLock MutexLock(&mutex);
delete osd;
osd = NULL;
}

View File

@ -8,7 +8,7 @@
*
* parts of this file are derived from the OMS program.
*
* $Id: dvbspu.h 1.9 2005/05/07 11:14:03 kls Exp $
* $Id: dvbspu.h 1.10 2005/11/05 12:08:47 kls Exp $
*/
#ifndef __DVBSPU_H
@ -91,7 +91,8 @@ class cDvbSpuBitmap {
class cDvbSpuDecoder:public cSpuDecoder {
private:
cOsd * osd;
cOsd *osd;
cMutex mutex;
// processing state
uint8_t *spu;