With actions now defined on initialization and reset to default
when given a 'None' action, we can remove the raw button codepaths
without a noticible change in driver behavior.

Signed-off-by: Jason Gerecke <killert...@gmail.com>
---
 src/wcmCommon.c |   72 +++++++++++++++++--------------------------------------
 1 file changed, 22 insertions(+), 50 deletions(-)

diff --git a/src/wcmCommon.c b/src/wcmCommon.c
index ba13983..164ef5c 100644
--- a/src/wcmCommon.c
+++ b/src/wcmCommon.c
@@ -292,14 +292,7 @@ static void sendAButton(InputInfoPtr pInfo, int button, 
int mask,
            common->wcmTPCButton ? "on" : "off", button, mask);
 
        if (!priv->keys[mapped_button][0])
-       {
-               /* No button action configured, send button */
-               xf86PostButtonEventP(pInfo->dev, is_absolute(pInfo),
-                                    priv->button_default[button], (mask != 0),
-                                    first_val, num_val,
-                                    VCOPY(valuators, num_val));
                return;
-       }
 
        sendAction(pInfo, (mask != 0), priv->keys[mapped_button],
                   ARRAY_SIZE(priv->keys[mapped_button]),
@@ -358,27 +351,19 @@ static int getScrollDelta(int current, int old, int wrap, 
int flags)
  * sent.
  * 
  * @param delta        Amount of change in the scrolling axis
- * @param button_up    Button event to send on scroll up
- * @param button_dn    Button event to send on scroll down
  * @param action_up    Action to send on scroll up
  * @param action_dn    Action to send on scroll down
- * @param[out] action  Action that should be performed
- * @return             Button that should be pressed
+ * @return             Action that should be performed
  */
-static int getWheelButton(int delta, int button_up, int button_dn,
-                          unsigned int *action_up, unsigned int *action_dn,
-                          unsigned int **action)
+static unsigned int* getWheelButton(int delta, unsigned int *action_up,
+                                    unsigned int *action_dn)
 {
-       int button = 0;
-       *action = NULL;
-
-       if (delta)
-       {
-               button  = delta > 0 ? button_up : button_dn;
-               *action = delta > 0 ? action_up : action_dn;
-       }
-
-       return button;
+       if (delta > 0)
+               return action_up;
+       else if (delta < 0)
+               return action_dn;
+       else
+               return NULL;
 }
 
 /**
@@ -391,17 +376,9 @@ static int getWheelButton(int delta, int button_up, int 
button_dn,
  * @param num_vals
  * @param valuators
  */
-static void sendWheelStripEvent(int button, unsigned int *action, InputInfoPtr 
pInfo,
-                                 int first_val, int num_vals, int *valuators)
+static void sendWheelStripEvent(unsigned int *action, InputInfoPtr pInfo,
+                                int first_val, int num_vals, int *valuators)
 {
-       WacomDevicePtr priv = (WacomDevicePtr) pInfo->private;
-
-       unsigned int button_action[1] = {button | AC_BUTTON | AC_KEYBTNPRESS};
-       if (!action || !(*action)) {
-               DBG(10, priv, "No wheel/strip action set; sending button %d 
(action %d).\n", button, button_action[0]);
-               action = &button_action[0];
-       }
-
        sendAction(pInfo, 1, action, ARRAY_SIZE(action), first_val, num_vals, 
valuators);
        sendAction(pInfo, 0, action, ARRAY_SIZE(action), first_val, num_vals, 
valuators);
 }
@@ -415,7 +392,7 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const 
WacomDeviceState* ds,
                                 int first_val, int num_vals, int *valuators)
 {
        WacomDevicePtr priv = (WacomDevicePtr) pInfo->private;
-       int fakeButton = 0, delta = 0;
+       int delta = 0;
        unsigned int *fakeKey = NULL;
 
        DBG(10, priv, "\n");
@@ -425,9 +402,8 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const 
WacomDeviceState* ds,
        if (delta && IsPad(priv) && priv->oldProximity == ds->proximity)
        {
                DBG(10, priv, "Left touch strip scroll delta = %d\n", delta);
-               fakeButton = getWheelButton(delta, 
priv->strip_default[STRIP_LEFT_UP], priv->strip_default[STRIP_LEFT_DN],
-                                           priv->strip_keys[STRIP_LEFT_UP], 
priv->strip_keys[STRIP_LEFT_DN], &fakeKey);
-               sendWheelStripEvent(fakeButton, fakeKey, pInfo, first_val, 
num_vals, valuators);
+               fakeKey = getWheelButton(delta, 
priv->strip_keys[STRIP_LEFT_UP], priv->strip_keys[STRIP_LEFT_DN]);
+               sendWheelStripEvent(fakeKey, pInfo, first_val, num_vals, 
valuators);
        }
 
        /* emulate events for right strip */
@@ -435,9 +411,8 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const 
WacomDeviceState* ds,
        if (delta && IsPad(priv) && priv->oldProximity == ds->proximity)
        {
                DBG(10, priv, "Right touch strip scroll delta = %d\n", delta);
-               fakeButton = getWheelButton(delta, 
priv->strip_default[STRIP_RIGHT_UP], priv->strip_default[STRIP_RIGHT_DN],
-                                           priv->strip_keys[STRIP_RIGHT_UP], 
priv->strip_keys[STRIP_RIGHT_DN], &fakeKey);
-               sendWheelStripEvent(fakeButton, fakeKey, pInfo, first_val, 
num_vals, valuators);
+               fakeKey = getWheelButton(delta, 
priv->strip_keys[STRIP_RIGHT_UP], priv->strip_keys[STRIP_RIGHT_DN]);
+               sendWheelStripEvent(fakeKey, pInfo, first_val, num_vals, 
valuators);
        }
 
        /* emulate events for relative wheel */
@@ -445,9 +420,8 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const 
WacomDeviceState* ds,
        if (delta && IsCursor(priv) && priv->oldProximity == ds->proximity)
        {
                DBG(10, priv, "Relative wheel scroll delta = %d\n", delta);
-               fakeButton = getWheelButton(delta, 
priv->wheel_default[WHEEL_REL_UP], priv->wheel_default[WHEEL_REL_DN],
-                                           priv->wheel_keys[WHEEL_REL_UP], 
priv->wheel_keys[WHEEL_REL_DN], &fakeKey);
-               sendWheelStripEvent(fakeButton, fakeKey, pInfo, first_val, 
num_vals, valuators);
+               fakeKey = getWheelButton(delta, priv->wheel_keys[WHEEL_REL_UP], 
priv->wheel_keys[WHEEL_REL_DN]);
+               sendWheelStripEvent(fakeKey, pInfo, first_val, num_vals, 
valuators);
        }
 
        /* emulate events for left touch ring */
@@ -455,9 +429,8 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const 
WacomDeviceState* ds,
        if (delta && IsPad(priv) && priv->oldProximity == ds->proximity)
        {
                DBG(10, priv, "Left touch wheel scroll delta = %d\n", delta);
-               fakeButton = getWheelButton(delta, 
priv->wheel_default[WHEEL_ABS_UP], priv->wheel_default[WHEEL_ABS_DN],
-                                           priv->wheel_keys[WHEEL_ABS_UP], 
priv->wheel_keys[WHEEL_ABS_DN], &fakeKey);
-               sendWheelStripEvent(fakeButton, fakeKey, pInfo, first_val, 
num_vals, valuators);
+               fakeKey = getWheelButton(delta, priv->wheel_keys[WHEEL_ABS_UP], 
priv->wheel_keys[WHEEL_ABS_DN]);
+               sendWheelStripEvent(fakeKey, pInfo, first_val, num_vals, 
valuators);
        }
 
        /* emulate events for right touch ring */
@@ -465,9 +438,8 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const 
WacomDeviceState* ds,
        if (delta && IsPad(priv) && priv->oldProximity == ds->proximity)
        {
                DBG(10, priv, "Right touch wheel scroll delta = %d\n", delta);
-               fakeButton = getWheelButton(delta, 
priv->wheel_default[WHEEL2_ABS_UP], priv->wheel_default[WHEEL2_ABS_DN],
-                                           priv->wheel_keys[WHEEL2_ABS_UP], 
priv->wheel_keys[WHEEL2_ABS_DN], &fakeKey);
-               sendWheelStripEvent(fakeButton, fakeKey, pInfo, first_val, 
num_vals, valuators);
+               fakeKey = getWheelButton(delta, 
priv->wheel_keys[WHEEL2_ABS_UP], priv->wheel_keys[WHEEL2_ABS_DN]);
+               sendWheelStripEvent(fakeKey, pInfo, first_val, num_vals, 
valuators);
        }
 }
 
-- 
1.7.9.5


------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second 
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to