summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2004-05-22 14:06:36 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2004-05-22 14:06:36 +0200
commitb239e8e2baa8334180eecfc07e1a83ee255fb1b2 (patch)
treecd55ffd62f8bbf0470a9fedf230cf5aad1b9cc00
parent8eff25b8de89fb536b7cd78d25af8907e615e605 (diff)
downloadvdr-b239e8e2baa8334180eecfc07e1a83ee255fb1b2.tar.gz
vdr-b239e8e2baa8334180eecfc07e1a83ee255fb1b2.tar.bz2
Fixed the OSD alignment in the SPU decoder
-rw-r--r--CONTRIBUTORS3
-rw-r--r--HISTORY2
-rw-r--r--dvbspu.c9
3 files changed, 12 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 3ae19e55..897b66a6 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -980,3 +980,6 @@ Drazen Dupor <drazen.dupor@dupor.com>
Prakash K. Cheemplavam <PrakashKC@gmx.de>
for fixing some issues with gcc 3.4
+
+Miko Wohlgemuth <weak@chello.at>
+ for reporting a problem with the OSD alignment in the SPU decoder
diff --git a/HISTORY b/HISTORY
index 1b7a027c..4b879945 100644
--- a/HISTORY
+++ b/HISTORY
@@ -2821,3 +2821,5 @@ Video Disk Recorder Revision History
can be called with a time_t value to get the day of week for that time.
- When processing XPM data, the color name "None" is no mapped to #00000000, which
is "fully transparent" (suggested by Sascha Volkenandt).
+- Fixed the OSD alignment in the SPU decoder (thanks to Miko Wohlgemuth for reporting
+ this one and helping to test the fix).
diff --git a/dvbspu.c b/dvbspu.c
index a7af8ee1..184e6863 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.6 2004/04/30 13:45:02 kls Exp $
+ * $Id: dvbspu.c 1.7 2004/05/22 14:02:32 kls Exp $
*/
#include <assert.h>
@@ -321,8 +321,13 @@ int cDvbSpuDecoder::ScaleYres(int value)
void cDvbSpuDecoder::DrawBmp(sDvbSpuRect & size, cBitmap * bmp)
{
- tArea Area = { size.x1, size.y1, size.x2, size.y2, 2 };
+ int x2 = size.x2;
+ while ((x2 - size.x1 + 1) & 0x03)
+ x2++;
+ tArea Area = { size.x1, size.y1, x2, size.y2, 2 };
osd->SetAreas(&Area, 1);
+ if (x2 > size.x2)
+ osd->DrawRectangle(size.x2 + 1, size.y1, x2, size.y2, clrTransparent);
osd->DrawBitmap(size.x1, size.y1, *bmp);
delete bmp;
}