[PATCH] savage: Fix Xv scaling on non-native resolutions

Tormod Volden lists.tormod at gmail.com
Sat Sep 17 02:22:30 PDT 2011


From: Hans-Juergen Mauser <hjmauser at gmx.net>

If I set the resolution to 800x600 for example (to be able to use the
TV output in full screen mode), I only can see 800/1024 = 0,78 of the
real video width, no matter if the video is displayed in a small player
window or enlarged to full screen. On the right of the video display,
the remaining width is filled with a black (or sometimes blue) bar.

The problem was mainly that only the drawing starting point was modified
by the scaling factor, but not the size-defining end of the drawing
rectangle.

https://bugs.launchpad.net/bugs/670790

Signed-off-by: Hans-Juergen Mauser <hjmauser at gmx.net>
Reviewed-by: Tormod Volden <debian.tormod at gmail.com>
---
 src/savage_video.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/savage_video.c b/src/savage_video.c
index 9f860c7..7d571ad 100644
--- a/src/savage_video.c
+++ b/src/savage_video.c
@@ -1508,9 +1508,13 @@ SavageDisplayVideoOld(
         drw_h = (float)(drw_h * psav->YExp1)/(float)psav->YExp2+1;
         dstBox->x1 = (float)(dstBox->x1 * psav->XExp1)/(float)psav->XExp2;
         dstBox->y1 = (float)(dstBox->y1 * psav->YExp1)/(float)psav->YExp2;
+	dstBox->x2 = (dstBox->x2 * psav->XExp1) / psav->XExp2;
+	dstBox->y2 = (dstBox->y2 * psav->YExp1) / psav->YExp2;
 
         dstBox->x1 += psav->displayXoffset;
         dstBox->y1 += psav->displayYoffset;
+	dstBox->x2 += psav->displayXoffset;
+	dstBox->y2 += psav->displayYoffset;
     }
 
     /*
@@ -1668,8 +1672,12 @@ SavageDisplayVideoNew(
 	drw_h = (drw_h * psav->YExp1)/psav->YExp2 + 1;
 	dstBox->x1 = (dstBox->x1 * psav->XExp1)/psav->XExp2;
 	dstBox->y1 = (dstBox->y1 * psav->YExp1)/psav->YExp2;
+	dstBox->x2 = (dstBox->x2 * psav->XExp1) / psav->XExp2;
+	dstBox->y2 = (dstBox->y2 * psav->YExp1) / psav->YExp2;
 	dstBox->x1 += psav->displayXoffset;
 	dstBox->y1 += psav->displayYoffset;
+	dstBox->x2 += psav->displayXoffset;
+	dstBox->y2 += psav->displayYoffset;
     }
 
 	if (psav->IsSecondary) {
-- 
1.7.4.1



More information about the xorg-devel mailing list