From 4184a2db90045c10d56faa390042ebf062a285fa Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 17 Mar 2008 23:04:49 -0700 Subject: [PATCH] Compute matrix inversion instead of using wire version in RRCrtcTransformSet It doesn't make sense to have the client invert this matrix when the server can do so reasonably efficiently. This avoids weird fixed point rounding errors when testing the transform against its inverse. Now to fix the protocol. --- randr/rrcrtc.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c index 9032b61ef..a3e250345 100644 --- a/randr/rrcrtc.c +++ b/randr/rrcrtc.c @@ -608,8 +608,6 @@ RRCrtcTransformSet (RRCrtcPtr crtc, PictFilterPtr filter = NULL; int width = 0, height = 0; - if (!PictureTransformIsInverse (transform, inverse)) - return BadMatch; if (filter_len) { filter = PictureFindFilter (crtc->pScreen, @@ -1220,7 +1218,8 @@ ProcRRSetCrtcTransform (ClientPtr client) return RRErrorBase + BadRRCrtc; PictTransform_from_xRenderTransform (&transform, &stuff->transform); - PictTransform_from_xRenderTransform (&inverse, &stuff->inverse); + if (!PictureTransformInvert (&inverse, &transform)) + return BadMatch; filter = (char *) (stuff + 1); nbytes = stuff->nbytesFilter;