Instead of a giant if/else block with essentially the same code, just work
on both x/y and then just trigger for the right axis. This call isn't that
expensive and readability trumps here.
---
 src/xf86Wacom.c |  109 ++++++++++++++++++++++++++-----------------------------
 1 files changed, 52 insertions(+), 57 deletions(-)

diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c
index 50d7e14..ad21c28 100644
--- a/src/xf86Wacom.c
+++ b/src/xf86Wacom.c
@@ -330,84 +330,79 @@ void wcmInitialCoordinates(LocalDevicePtr local, int axis)
 {
        WacomDevicePtr priv = (WacomDevicePtr)local->private;
        WacomCommonPtr common = priv->common;
-       int topx = 0, topy = 0, resolution;
+       int topx = 0, topy = 0, resolution_x, resolution_y;
        int bottomx = priv->maxX, bottomy = priv->maxY;
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
-        Atom label;
+        Atom label_x, label_y;
 #endif
 
        wcmMappingFactor(local);
 
-       /* x ax */
-       if (axis == 0)
+       if (priv->flags & ABSOLUTE_FLAG)
        {
-               if (priv->flags & ABSOLUTE_FLAG)
+               topx = priv->topX;
+               topy = priv->topY;
+               bottomx = priv->sizeX + priv->topX;
+               bottomy = priv->sizeY + priv->topY;
+
+               if (priv->twinview != TV_NONE)
                {
-                       topx = priv->topX;
-                       bottomx = priv->sizeX + priv->topX;
-                       if (priv->currentScreen == 1 && priv->twinview != 
TV_NONE)
+                       if (priv->currentScreen == 1)
+                       {
                                topx += priv->tvoffsetX;
-                       if (priv->currentScreen == 0 && priv->twinview != 
TV_NONE)
+                               topy += priv->tvoffsetY;
+                       } else if (priv->currentScreen == 0)
+                       {
                                bottomx -= priv->tvoffsetX;
-
-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
-                        label = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_X);
-                } else {
-                        label = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X);
-#endif
-               }
-
-               resolution = priv->resolX;
-               if (common->wcmScaling)
-               {
-                       /* In case wcmDevConvert didn't get called */
-                       topx = 0;
-                       bottomx = (int)((double)priv->sizeX * priv->factorX + 
0.5);
-                       resolution = (int)((double)resolution * priv->factorX + 
0.5);
+                               bottomy -= priv->tvoffsetY;
+                       }
                }
 
-               InitValuatorAxisStruct(local->dev, 0,
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
-                        label,
+               label_x = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_X);
+               label_y = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_Y);
+       } else {
+               label_x = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X);
+               label_y = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
 #endif
-                        topx, bottomx,
-                       resolution, 0, resolution);
        }
-       else if (axis == 1) /* y ax */
+       resolution_x = priv->resolX;
+       resolution_y = priv->resolY;
+
+       if (common->wcmScaling)
        {
-               if (priv->flags & ABSOLUTE_FLAG)
-               {
-                       topy = priv->topY;
-                       bottomy = priv->sizeY + priv->topY;
-                       if (priv->currentScreen == 1 && priv->twinview != 
TV_NONE)
-                               topy += priv->tvoffsetY;
-                       if (priv->currentScreen == 0 && priv->twinview != 
TV_NONE)
-                               bottomy -= priv->tvoffsetY;
+               /* In case wcmDevConvert didn't get called */
+               topx = 0;
+               bottomx = (int)((double)priv->sizeX * priv->factorX + 0.5);
+               resolution_x = (int)((double)resolution_x * priv->factorX + 
0.5);
+
+               topy = 0;
+               bottomy = (int)((double)priv->sizeY * priv->factorY + 0.5);
+               resolution_y = (int)((double)resolution_y * priv->factorY + 
0.5);
+       }
 
+       switch(axis)
+       {
+               case 0:
+                       InitValuatorAxisStruct(local->dev, 0,
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
-                        label = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_Y);
-                } else {
-                        label = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
+                                       label_x,
 #endif
-               }
-
-               resolution = priv->resolY;
-               if (common->wcmScaling)
-               {
-                       /* In case wcmDevConvert didn't get called */
-                       topy = 0;
-                       bottomy = (int)((double)priv->sizeY * priv->factorY + 
0.5);
-                       resolution = (int)((double)resolution * priv->factorY + 
0.5);
-               }
-
-               InitValuatorAxisStruct(local->dev, 1,
+                                       topx, bottomx,
+                                       resolution_x, 0, resolution_x);
+                       break;
+               case 1:
+                       InitValuatorAxisStruct(local->dev, 1,
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
-                        label,
+                                       label_y,
 #endif
-                        topy, bottomy,
-                       resolution, 0, resolution);
-       } else
-               xf86Msg(X_ERROR, "%s: Cannot initialize axis %d.\n", axis);
+                                       topy, bottomy,
+                                       resolution_y, 0, resolution_y);
+                       break;
+               default:
+                       xf86Msg(X_ERROR, "%s: Cannot initialize axis %d.\n", 
local->name, axis);
+                       break;
+       }
 
        return;
 }
-- 
1.6.6.1


------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to