From 0ac1c3810824b43fb8439d72d116e379e01e5030 Mon Sep 17 00:00:00 2001 From: Ping Cheng Date: Tue, 22 Dec 2009 18:06:34 -0800 Subject: Fix a tablet rotation bug. Caused by the misuse of maximum X and Y. Signed-off-by: Ping Cheng Signed-off-by: Peter Hutterer --- src/wcmCommon.c | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/src/wcmCommon.c b/src/wcmCommon.c index 96efcba..173ee53 100644 --- a/src/wcmCommon.c +++ b/src/wcmCommon.c @@ -726,32 +726,18 @@ void wcmRotateCoordinates(LocalDevicePtr local, int* x, int* y) { tmp_coord = *x; *x = *y; - if (!IsTouch(priv)) - *y = common->wcmMaxY - tmp_coord; - else - *y = common->wcmMaxTouchY - tmp_coord; + *y = priv->maxY - tmp_coord; } else if (common->wcmRotate == ROTATE_CCW) { tmp_coord = *y; *y = *x; - if (!IsTouch(priv)) - *x = common->wcmMaxX - tmp_coord; - else - *y = common->wcmMaxTouchX - tmp_coord; + *x = priv->maxX - tmp_coord; } else if (common->wcmRotate == ROTATE_HALF) { - if (!IsTouch(priv)) - { - *x = common->wcmMaxX - *x; - *y = common->wcmMaxY - *y; - } - else - { - *x = common->wcmMaxTouchX - *x; - *y = common->wcmMaxTouchY - *y; - } + *x = priv->maxX - *x; + *y = priv->maxY - *y; } } @@ -1953,13 +1939,13 @@ void xf86WcmRotateTablet(LocalDevicePtr local, int value) /* rotate all devices at once! else they get misaligned */ for (tmppriv = common->wcmDevices; tmppriv; tmppriv = tmppriv->next) { - oldMaxX = priv->maxX; - oldMaxY = priv->maxY; + oldMaxX = tmppriv->maxX; + oldMaxY = tmppriv->maxY; - if (oldRotation == ROTATE_CW || oldRotation == ROTATE_CCW) + if (oldRotation == ROTATE_CW || oldRotation == ROTATE_CCW) { - priv->maxX = oldMaxY; - priv->maxY = oldMaxX; + tmppriv->maxX = oldMaxY; + tmppriv->maxY = oldMaxX; } tmpTopX = tmppriv->topX; -- cgit v1.2.1