[PATCH] Actually use filter kernel size to expand transform redisplay box

Keith Packard keithp at keithp.com
Fri Nov 14 14:12:40 PST 2008


---
 hw/xfree86/modes/xf86Rotate.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
index bf6976a..dc9ad11 100644
--- a/hw/xfree86/modes/xf86Rotate.c
+++ b/hw/xfree86/modes/xf86Rotate.c
@@ -118,10 +118,10 @@ xf86RotateCrtcRedisplay (xf86CrtcPtr crtc, RegionPtr region)
 	BoxRec	dst_box;
 
 	dst_box = *b;
-	dst_box.x1 -= crtc->filter_width >> 2;
-	dst_box.x2 += crtc->filter_width >> 2;
-	dst_box.y1 -= crtc->filter_width >> 2;
-	dst_box.y2 += crtc->filter_width >> 2;
+	dst_box.x1 -= crtc->filter_width >> 1;
+	dst_box.x2 += crtc->filter_width >> 1;
+	dst_box.y1 -= crtc->filter_height >> 1;
+	dst_box.y2 += crtc->filter_height >> 1;
 	PictureTransformBounds (&dst_box, &crtc->framebuffer_to_crtc);
 	CompositePicture (PictOpSrc,
 			  src, NULL, dst,
@@ -408,6 +408,11 @@ xf86CrtcRotate (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation)
 		}
 	    } else
 		new_filter = transform->filter;
+	    if (new_filter)
+	    {
+		new_width = new_filter->width;
+		new_height = new_filter->height;
+	    }
 	    PictureTransformMultiply (&crtc_to_fb, &transform->transform, &crtc_to_fb);
 	    PictureTransformMultiply (&fb_to_crtc, &fb_to_crtc, &transform->inverse);
 	}
-- 
1.5.6.5




More information about the xorg mailing list