Sprinkles a few extra DBG() calls into the code to make it a little
easier to track down issues with property-setting code.

Signed-off-by: Jason Gerecke <killert...@gmail.com>
---
 src/wcmXCommand.c | 45 ++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 38 insertions(+), 7 deletions(-)

diff --git a/src/wcmXCommand.c b/src/wcmXCommand.c
index 922c80f..a2723f5 100644
--- a/src/wcmXCommand.c
+++ b/src/wcmXCommand.c
@@ -367,16 +367,30 @@ static void wcmFindActionHandler(WacomDevicePtr priv, 
Atom property, Atom **hand
        }
 }
 
-static int wcmCheckActionProperty(Atom property, XIPropertyValuePtr prop)
+static int wcmCheckActionProperty(WacomDevicePtr priv, Atom property, 
XIPropertyValuePtr prop)
 {
        CARD32 *data;
        int j;
 
-       if (!property)
+       if (!property) {
+               DBG(5, priv, "WARNING: property == 0\n");
                return Success;
+       }
 
-       if (prop->size >= 255 || prop->format != 32 || prop->type != XA_INTEGER)
+       if (prop->size >= 255) {
+               DBG(3, priv, "ERROR: Too many values (%d > 255)\n", prop->size);
                return BadMatch;
+       }
+
+       if (prop->format != 32) {
+               DBG(3, priv, "ERROR: Incorrect value format (%d != 32)\n", 
prop->format);
+               return BadMatch;
+       }
+
+       if (prop->type != XA_INTEGER) {
+               DBG(3, priv, "ERROR: Incorrect value type (%d != 
XA_INTEGER)\n", prop->type);
+               return BadMatch;
+       }
 
        data = (CARD32*)prop->data;
 
@@ -385,19 +399,25 @@ static int wcmCheckActionProperty(Atom property, 
XIPropertyValuePtr prop)
                int code = data[j] & AC_CODE;
                int type = data[j] & AC_TYPE;
 
+               DBG(10, priv, "Index %d == %d (type: %d, code: %d)\n", j, 
data[j], type, code);
+
                switch(type)
                {
                        case AC_KEY:
                                break;
                        case AC_BUTTON:
-                               if (code > WCM_MAX_BUTTONS)
+                               if (code > WCM_MAX_BUTTONS) {
+                                       DBG(3, priv, "ERROR: AC_BUTTON code too 
high (%d > %d)\n", code, WCM_MAX_BUTTONS);
                                        return BadValue;
+                               }
                                break;
                        case AC_DISPLAYTOGGLE:
                        case AC_MODETOGGLE:
                                break;
                        default:
+                               DBG(3, priv, "ERROR: Unknown command\n");
                                return BadValue;
+                               break;
                }
        }
 
@@ -425,11 +445,19 @@ static int wcmSetActionProperty(DeviceIntPtr dev, Atom 
property,
        WacomDevicePtr priv = (WacomDevicePtr) pInfo->private;
        int rc, i;
 
-       DBG(10, priv, "\n");
+       DBG(5, priv, "%s new actions for Atom %d\n", checkonly ? "Checking" : 
"Setting", property);
 
-       rc = wcmCheckActionProperty(property, prop);
-       if (rc != Success)
+       rc = wcmCheckActionProperty(priv, property, prop);
+       if (rc != Success) {
+               char *msg = NULL;
+               switch (rc) {
+                       case BadMatch: msg = "BadMatch"; break;
+                       case BadValue: msg = "BadValue"; break;
+                       default: msg = "UNKNOWN"; break;
+               }
+               DBG(3, priv, "Action validation failed with code %d (%s)\n", 
rc, msg);
                return rc;
+       }
 
        if (!checkonly && prop)
        {
@@ -485,8 +513,11 @@ static int wcmSetActionsProperty(DeviceIntPtr dev, Atom 
property,
                                  int size, Atom* handlers, unsigned int 
(*actions)[256])
 {
        InputInfoPtr pInfo = (InputInfoPtr) dev->public.devicePrivate;
+       WacomDevicePtr priv = (WacomDevicePtr) pInfo->private;
        int rc;
 
+       DBG(10, priv, "\n");
+
        if (prop->size != size)
                return BadValue;
 
-- 
1.8.1.1


------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to