From 45e5859ae4cb9f7fd29a2acdd23ecfc5348d55fd Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 8 Jan 2005 09:54:32 +0100 Subject: [PATCH] Revoked 'Fixed reusing OSD in cDvbSpuDecoder' by demand of Marco Schluessler --- CONTRIBUTORS | 1 - HISTORY | 1 - dvbspu.c | 28 +++++----------------------- 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index c5398e2a..0b918a57 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -901,7 +901,6 @@ Reinhard Nissl for reporting a high CPU load in still picture mode after removing the usleep() call from cDvbPlayer::Action() for reporting a race condition in starting a thread - for fixing reusing OSD in cDvbSpuDecoder Richard Robson for reporting freezing replay if a timer starts while in Transfer Mode from the diff --git a/HISTORY b/HISTORY index c495a1ef..36ba52f4 100644 --- a/HISTORY +++ b/HISTORY @@ -3265,7 +3265,6 @@ Video Disk Recorder Revision History used to get notified when the audio track has been switched. - Skins need to implement the new cSkinDisplayTrack class to display the audio track menu. -- Fixed reusing OSD in cDvbSpuDecoder (thanks to Reinhard Nissl). - The new setup option "DVB/Audio languages" can be used to control which audio language shall be selected in case a channel broadcasts in different languages (see MANUAL for details). diff --git a/dvbspu.c b/dvbspu.c index 3c17e563..a244578c 100644 --- a/dvbspu.c +++ b/dvbspu.c @@ -8,7 +8,7 @@ * * parts of this file are derived from the OMS program. * - * $Id: dvbspu.c 1.9 2005/01/02 15:27:07 kls Exp $ + * $Id: dvbspu.c 1.10 2005/01/08 09:53:44 kls Exp $ */ #include @@ -349,20 +349,6 @@ sDvbSpuRect cDvbSpuDecoder::CalcAreaSize(sDvbSpuRect fgsize, cBitmap *fgbmp, sDv return size; } -static bool OsdMatchesArea(cOsd *osd, tArea &area) -{ - cBitmap *bmp = osd->GetBitmap(0); - if (!bmp) - return false; - if (bmp->Bpp() != area.bpp) - return false; - if (bmp->X0() != area.x1 || bmp->Y0() != area.y1) - return false; - if (bmp->Width() != area.Width() || bmp->Height() != area.Height()) - return false; - return true; -} - void cDvbSpuDecoder::Draw(void) { if (!spubmp) { @@ -400,16 +386,12 @@ void cDvbSpuDecoder::Draw(void) } if (bg || fg) { - int x2 = areaSize.x2; - while ((x2 - areaSize.x1 + 1) & 0x03) - x2++; - tArea Area = { areaSize.x1, areaSize.y1, x2, areaSize.y2, (fg && bg) ? 4 : 2 }; - if (osd && !OsdMatchesArea(osd, Area)) { - delete osd; - osd = NULL; - } if (osd == NULL) { osd = cOsdProvider::NewOsd(0, 0); + int x2 = areaSize.x2; + while ((x2 - areaSize.x1 + 1) & 0x03) + x2++; + tArea Area = { areaSize.x1, areaSize.y1, x2, areaSize.y2, (fg && bg) ? 4 : 2 }; osd->SetAreas(&Area, 1); }