On Sun, Dec 20, 2009 at 10:31 PM, Peter Hutterer
<[email protected]> wrote:
> On Fri, Dec 18, 2009 at 09:26:11PM -0800, Ping wrote:
>> Ok, another try by following the property principle.  Comments are added
>> into the patch without repeating them in the commit message.  Feel free to
>> change them the way that works for you.

Hope this patch puts the issue to an end.  I tested it and it works.
However, I do have one question (I think I asked this it before):  how
are we going to let the driver "remember" the changes an user made?
The old way that we used to store xsetwacom in ~/.xinitrc or something
else?


>From b2ad0f639ee720a00ba8cb249cce042d0fbe17f1 Mon Sep 17 00:00:00 2001
From: Ping Cheng <[email protected]>
Date: Mon, 21 Dec 2009 16:52:28 -0800
Subject: [PATCH] Remove area overlap check for area property

Signed-off-by: Ping Cheng <[email protected]>
---
 src/wcmXCommand.c |   51 +++++++++++++++++++++++++++------------------------
 1 files changed, 27 insertions(+), 24 deletions(-)

diff --git a/src/wcmXCommand.c b/src/wcmXCommand.c
index 31b9945..d0120ff 100644
--- a/src/wcmXCommand.c
+++ b/src/wcmXCommand.c
@@ -304,45 +304,48 @@ int xf86WcmSetProperty(DeviceIntPtr dev, Atom
property, XIPropertyValuePtr prop,
     if (property == prop_tablet_area)
     {
         INT32 *values = (INT32*)prop->data;
-        WacomToolArea area;
+        WacomToolAreaPtr area = priv->toolarea;

         if (prop->size != 4 || prop->format != 32)
             return BadValue;

-        area.topX = values[0];
-        area.topY = values[1];
-        area.bottomX = values[2];
-        area.bottomY = values[3];
+        /* value validation is unnecessary since we let utility
programs, such as
+         * xsetwacom and userland control panel take care of the
validation role.
+         * when all four values are set to -1, it is an area reset
(xydefault) */
+        if ((values[0] != -1) || (values[1] != -1) ||
+            (values[2] != -1) || (values[3] != -1))
+        {
+            area->topX = values[0];
+            area->topY = values[1];
+            area->bottomX = values[2];
+            area->bottomY = values[3];

-       /* FIXME: this will always be the case? */
-        if (WcmAreaListOverlap(&area, priv->tool->arealist))
-            return BadValue;
+            /* validate the area */
+            if (WcmAreaListOverlap(area, priv->tool->arealist))
+                return BadValue;
+        }

         if (!checkonly)
         {
-            /* Invalid range resets axis to defaults */
-            if (values[0] >= values[2])
+            if ((values[0] == -1) && (values[1] == -1) &&
+                (values[2] == -1) && (values[3] == -1))
             {
                 values[0] = 0;
-               if (!IsTouch(priv))
+                values[1] = 0;
+                if (!IsTouch(priv))
                    values[2] = common->wcmMaxX;
-               else
+                else
                    values[2] = common->wcmMaxTouchX;
-            }
-
-            if (values[1] >= values[3])
-            {
-                values[1] = 0;
-               if (!IsTouch(priv))
+                if (!IsTouch(priv))
                    values[3] = common->wcmMaxY;
-               else
+                else
                    values[3] = common->wcmMaxTouchY;
             }

-            priv->topX = values[0];
-            priv->topY = values[1];
-            priv->bottomX = values[2];
-            priv->bottomY = values[3];
+            priv->topX = area->topX = values[0];
+            priv->topY = area->topY = values[1];
+            priv->bottomX = area->bottomX = values[2];
+            priv->bottomY = area->bottomY = values[3];
             xf86WcmInitialCoordinates(local, 0);
             xf86WcmInitialCoordinates(local, 1);
         }
-- 
1.6.5.2

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to