mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Added a mutex to protect cOsd::Osds from simultaneous access from different threads
This commit is contained in:
parent
c13d6e6070
commit
fc4bed511d
@ -1109,6 +1109,7 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
|
|||||||
for some input on how to use BER and UNC values to generate a "quality" value
|
for some input on how to use BER and UNC values to generate a "quality" value
|
||||||
for fixing some crashes in subtitle display
|
for fixing some crashes in subtitle display
|
||||||
for reporting that DELETENULL() was not thread safe
|
for reporting that DELETENULL() was not thread safe
|
||||||
|
for reporting a crash in subtitle display, related to cOsd::Osds
|
||||||
|
|
||||||
Ralf Klueber <ralf.klueber@vodafone.com>
|
Ralf Klueber <ralf.klueber@vodafone.com>
|
||||||
for reporting a bug in cutting a recording if there is only a single editing mark
|
for reporting a bug in cutting a recording if there is only a single editing mark
|
||||||
|
4
HISTORY
4
HISTORY
@ -6650,7 +6650,7 @@ Video Disk Recorder Revision History
|
|||||||
- Added support for "content identifier descriptor" and "default authority descriptor"
|
- Added support for "content identifier descriptor" and "default authority descriptor"
|
||||||
to 'libsi' (thanks to Dave Pickles).
|
to 'libsi' (thanks to Dave Pickles).
|
||||||
|
|
||||||
2011-08-14: Version 1.7.20
|
2011-08-15: Version 1.7.20
|
||||||
|
|
||||||
- Added some missing 'const' to tChannelID (reported by Sundararaj Reel).
|
- Added some missing 'const' to tChannelID (reported by Sundararaj Reel).
|
||||||
- The isnumber() function now checks the given pointer for NULL (thanks to Holger
|
- The isnumber() function now checks the given pointer for NULL (thanks to Holger
|
||||||
@ -6686,3 +6686,5 @@ Video Disk Recorder Revision History
|
|||||||
- The pic2mpg script of the 'pictures' plugin now generates HD images (thanks to
|
- The pic2mpg script of the 'pictures' plugin now generates HD images (thanks to
|
||||||
Andre Weidemann for his support in using convert/ffmpeg). The old SD version is
|
Andre Weidemann for his support in using convert/ffmpeg). The old SD version is
|
||||||
still available as pic2mpg-sd.
|
still available as pic2mpg-sd.
|
||||||
|
- Added a mutex to protect cOsd::Osds from simultaneous access from different threads
|
||||||
|
(reported by Rolf Ahrenberg).
|
||||||
|
6
osd.c
6
osd.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osd.c 2.22 2011/05/22 15:18:59 kls Exp $
|
* $Id: osd.c 2.23 2011/08/15 09:27:39 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
@ -1600,9 +1600,11 @@ int cOsd::osdTop = 0;
|
|||||||
int cOsd::osdWidth = 0;
|
int cOsd::osdWidth = 0;
|
||||||
int cOsd::osdHeight = 0;
|
int cOsd::osdHeight = 0;
|
||||||
cVector<cOsd *> cOsd::Osds;
|
cVector<cOsd *> cOsd::Osds;
|
||||||
|
cMutex cOsd::mutex;
|
||||||
|
|
||||||
cOsd::cOsd(int Left, int Top, uint Level)
|
cOsd::cOsd(int Left, int Top, uint Level)
|
||||||
{
|
{
|
||||||
|
cMutexLock MutexLock(&mutex);
|
||||||
isTrueColor = false;
|
isTrueColor = false;
|
||||||
savedBitmap = NULL;
|
savedBitmap = NULL;
|
||||||
numBitmaps = 0;
|
numBitmaps = 0;
|
||||||
@ -1624,6 +1626,7 @@ cOsd::cOsd(int Left, int Top, uint Level)
|
|||||||
|
|
||||||
cOsd::~cOsd()
|
cOsd::~cOsd()
|
||||||
{
|
{
|
||||||
|
cMutexLock MutexLock(&mutex);
|
||||||
for (int i = 0; i < numBitmaps; i++)
|
for (int i = 0; i < numBitmaps; i++)
|
||||||
delete bitmaps[i];
|
delete bitmaps[i];
|
||||||
delete savedBitmap;
|
delete savedBitmap;
|
||||||
@ -1944,6 +1947,7 @@ cOsdProvider::~cOsdProvider()
|
|||||||
|
|
||||||
cOsd *cOsdProvider::NewOsd(int Left, int Top, uint Level)
|
cOsd *cOsdProvider::NewOsd(int Left, int Top, uint Level)
|
||||||
{
|
{
|
||||||
|
cMutexLock MutexLock(&cOsd::mutex);
|
||||||
if (Level == OSD_LEVEL_DEFAULT && cOsd::IsOpen())
|
if (Level == OSD_LEVEL_DEFAULT && cOsd::IsOpen())
|
||||||
esyslog("ERROR: attempt to open OSD while it is already open - using dummy OSD!");
|
esyslog("ERROR: attempt to open OSD while it is already open - using dummy OSD!");
|
||||||
else if (osdProvider) {
|
else if (osdProvider) {
|
||||||
|
3
osd.h
3
osd.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osd.h 2.13 2011/04/17 14:24:32 kls Exp $
|
* $Id: osd.h 2.14 2011/08/15 09:22:50 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __OSD_H
|
#ifndef __OSD_H
|
||||||
@ -709,6 +709,7 @@ class cOsd {
|
|||||||
private:
|
private:
|
||||||
static int osdLeft, osdTop, osdWidth, osdHeight;
|
static int osdLeft, osdTop, osdWidth, osdHeight;
|
||||||
static cVector<cOsd *> Osds;
|
static cVector<cOsd *> Osds;
|
||||||
|
static cMutex mutex;
|
||||||
bool isTrueColor;
|
bool isTrueColor;
|
||||||
cBitmap *savedBitmap;
|
cBitmap *savedBitmap;
|
||||||
cBitmap *bitmaps[MAXOSDAREAS];
|
cBitmap *bitmaps[MAXOSDAREAS];
|
||||||
|
Loading…
Reference in New Issue
Block a user