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 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c index b715884..b8b9ec0 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, @@ -1229,7 +1227,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; -- 1.5.6.5 _______________________________________________ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg