On Thu, Jan 17, 2013 at 05:42:17PM -0800, Jason Gerecke wrote:
> 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
patches 1-3/8:
Reviewed-by: Peter Hutterer
Cheers,
Peter
> ---
> 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
>
--
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML