From 0e22c9ff9e45686d1488d96903d5404d8143afa1 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 12 Feb 2006 11:52:53 +0100 Subject: [PATCH] Improved OSD area handling in cDvbSpuDecoder --- CONTRIBUTORS | 1 + HISTORY | 1 + dvbspu.c | 12 ++++++------ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d88e93f0..2d9708cd 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1308,6 +1308,7 @@ Marco Schl for removing leftover 'needsBufferReserve' variable from cTransfer for adding an 'Id' parameter to cDevice::PlayAudio() to allow plugins to easier process the audio data + for improving OSD area handling in cDvbSpuDecoder Jürgen Schmitz for reporting a bug in displaying the current channel when switching via the SVDRP diff --git a/HISTORY b/HISTORY index c20c8a32..77ac3f4c 100644 --- a/HISTORY +++ b/HISTORY @@ -4326,3 +4326,4 @@ Video Disk Recorder Revision History - Now stopping scanning the video directory if there are too many levels of symbolic links, which might indicate a recursive link loop (based on a patch from Helmut Auer). +- Improved OSD area handling in cDvbSpuDecoder (thanks to Marco Schlüßler). diff --git a/dvbspu.c b/dvbspu.c index 745af8b2..9dbe07a8 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.19 2006/01/08 11:39:46 kls Exp $ + * $Id: dvbspu.c 1.20 2006/02/12 11:50:20 kls Exp $ */ #include "dvbspu.h" @@ -368,11 +368,11 @@ void cDvbSpuDecoder::Draw(void) if (bg || fg) { 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); + if ((areaSize.width() & 3) != 0) + areaSize.x2 += 4 - (areaSize.width() & 3); + tArea Area = { areaSize.x1, areaSize.y1, areaSize.x2, areaSize.y2, (fg && bg) ? 4 : 2 }; + if (osd->SetAreas(&Area, 1) != oeOk) + dsyslog("dvbspu: AreaSize (%d, %d) (%d, %d) Bpp %d", areaSize.x1, areaSize.y1, areaSize.x2, areaSize.y2, (fg && bg) ? 4 : 2 ); } if (bg)