summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Gerecke <killertofu@gmail.com>2012-12-18 12:58:45 -0800
committerJason Gerecke <killertofu@gmail.com>2013-01-23 11:06:43 -0800
commit082f37feee3170521df4a1a1bbd91e0274282bf1 (patch)
tree72627f4d4bc3fbebc2f81b3680e52c4d5cc0c42e
parentb6bd20a660f6c682f9de3372b3f1a636a34d9b65 (diff)
downloadxf86-input-wacom-082f37feee3170521df4a1a1bbd91e0274282bf1.tar.gz
Improve logging of X property setting
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 <killertofu@gmail.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--src/wcmXCommand.c45
1 files 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;