[PATCH synaptics 1/4] Reshuffle ComputeDeltas for less indentation.

Peter Hutterer peter.hutterer at who-t.net
Wed Feb 16 17:19:21 PST 2011


No functional changes, just moving out of double-nested conditions.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 src/synaptics.c |  148 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 78 insertions(+), 70 deletions(-)

diff --git a/src/synaptics.c b/src/synaptics.c
index 03092f2..b033067 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -1722,6 +1722,10 @@ ComputeDeltas(SynapticsPrivate *priv, const struct SynapticsHwState *hw,
     double dx, dy;
     double integral;
     int delay = 1000000000;
+    double tmpf;
+    int x_edge_speed = 0;
+    int y_edge_speed = 0;
+    double dtime = (hw->millis - HIST(0).millis) / 1000.0;
 
     dx = dy = 0;
 
@@ -1742,79 +1746,83 @@ ComputeDeltas(SynapticsPrivate *priv, const struct SynapticsHwState *hw,
 	    break;
 	}
     }
-    if (inside_area && moving_state && !priv->palm &&
-	!priv->vert_scroll_edge_on && !priv->horiz_scroll_edge_on &&
-	!priv->vert_scroll_twofinger_on && !priv->horiz_scroll_twofinger_on &&
-	!priv->circ_scroll_on && priv->prevFingers == hw->numFingers) {
-	/* FIXME: Wtf?? what's with 13? */
-	delay = MIN(delay, 13);
-	if (priv->count_packet_finger > 3) { /* min. 3 packets */
-	    double tmpf;
-	    int x_edge_speed = 0;
-	    int y_edge_speed = 0;
-	    double dtime = (hw->millis - HIST(0).millis) / 1000.0;
-
-	    if (priv->moving_state == MS_TRACKSTICK) {
-		dx = (hw->x - priv->trackstick_neutral_x);
-		dy = (hw->y - priv->trackstick_neutral_y);
-
-		dx = dx * dtime * para->trackstick_speed;
-		dy = dy * dtime * para->trackstick_speed;
-	    } else if (moving_state == MS_TOUCHPAD_RELATIVE) {
-		dx = estimate_delta(hw->x, HIST(0).x, HIST(1).x, HIST(2).x);
-		dy = estimate_delta(hw->y, HIST(0).y, HIST(1).y, HIST(2).y);
-
-		if ((priv->tap_state == TS_DRAG) || para->edge_motion_use_always) {
-		    int minZ = para->edge_motion_min_z;
-		    int maxZ = para->edge_motion_max_z;
-		    int minSpd = para->edge_motion_min_speed;
-		    int maxSpd = para->edge_motion_max_speed;
-		    int edge_speed;
-
-		    if (hw->z <= minZ) {
-			edge_speed = minSpd;
-		    } else if (hw->z >= maxZ) {
-			edge_speed = maxSpd;
-		    } else {
-			edge_speed = minSpd + (hw->z - minZ) * (maxSpd - minSpd) / (maxZ - minZ);
-		    }
-		    if (!priv->synpara.circular_pad) {
-			/* on rectangular pad */
-			if (edge & RIGHT_EDGE) {
-			    x_edge_speed = edge_speed;
-			} else if (edge & LEFT_EDGE) {
-			    x_edge_speed = -edge_speed;
-			}
-			if (edge & TOP_EDGE) {
-			    y_edge_speed = -edge_speed;
-			} else if (edge & BOTTOM_EDGE) {
-			    y_edge_speed = edge_speed;
-			}
-		    } else if (edge) {
-			/* at edge of circular pad */
-			double relX, relY;
-
-			relative_coords(priv, hw->x, hw->y, &relX, &relY);
-			x_edge_speed = (int)(edge_speed * relX);
-			y_edge_speed = (int)(edge_speed * relY);
-		    }
-		}
-	    }
 
-	    /* report edge speed as synthetic motion. Of course, it would be
-	     * cooler to report floats than to buffer, but anyway. */
-	    tmpf = dx + x_edge_speed * dtime + priv->frac_x;
-	    priv->frac_x = modf(tmpf, &integral);
-	    dx = integral;
-	    tmpf = dy + y_edge_speed * dtime + priv->frac_y;
-	    priv->frac_y = modf(tmpf, &integral);
-	    dy = integral;
-	}
-
-	priv->count_packet_finger++;
-    } else {				    /* reset packet counter */
-	priv->count_packet_finger = 0;
+    if (!inside_area || !moving_state || priv->palm ||
+	priv->vert_scroll_edge_on || priv->horiz_scroll_edge_on ||
+	priv->vert_scroll_twofinger_on || priv->horiz_scroll_twofinger_on ||
+	priv->circ_scroll_on || priv->prevFingers != hw->numFingers)
+    {
+        /* reset packet counter. */
+        priv->count_packet_finger = 0;
+        goto out;
+    }
+
+    /* FIXME: Wtf?? what's with 13? */
+    delay = MIN(delay, 13);
+
+    if (priv->count_packet_finger <= 3) /* min. 3 packets */
+        goto skip; /* skip the lot */
+
+
+    if (priv->moving_state == MS_TRACKSTICK) {
+        dx = (hw->x - priv->trackstick_neutral_x);
+        dy = (hw->y - priv->trackstick_neutral_y);
+
+        dx = dx * dtime * para->trackstick_speed;
+        dy = dy * dtime * para->trackstick_speed;
+    } else if (moving_state == MS_TOUCHPAD_RELATIVE) {
+        dx = estimate_delta(hw->x, HIST(0).x, HIST(1).x, HIST(2).x);
+        dy = estimate_delta(hw->y, HIST(0).y, HIST(1).y, HIST(2).y);
+
+        if ((priv->tap_state == TS_DRAG) || para->edge_motion_use_always) {
+            int minZ = para->edge_motion_min_z;
+            int maxZ = para->edge_motion_max_z;
+            int minSpd = para->edge_motion_min_speed;
+            int maxSpd = para->edge_motion_max_speed;
+            int edge_speed;
+
+            if (hw->z <= minZ) {
+                edge_speed = minSpd;
+            } else if (hw->z >= maxZ) {
+                edge_speed = maxSpd;
+            } else {
+                edge_speed = minSpd + (hw->z - minZ) * (maxSpd - minSpd) / (maxZ - minZ);
+            }
+            if (!priv->synpara.circular_pad) {
+                /* on rectangular pad */
+                if (edge & RIGHT_EDGE) {
+                    x_edge_speed = edge_speed;
+                } else if (edge & LEFT_EDGE) {
+                    x_edge_speed = -edge_speed;
+                }
+                if (edge & TOP_EDGE) {
+                    y_edge_speed = -edge_speed;
+                } else if (edge & BOTTOM_EDGE) {
+                    y_edge_speed = edge_speed;
+                }
+            } else if (edge) {
+                /* at edge of circular pad */
+                double relX, relY;
+
+                relative_coords(priv, hw->x, hw->y, &relX, &relY);
+                x_edge_speed = (int)(edge_speed * relX);
+                y_edge_speed = (int)(edge_speed * relY);
+            }
+        }
     }
+
+    /* report edge speed as synthetic motion. Of course, it would be
+     * cooler to report floats than to buffer, but anyway. */
+    tmpf = dx + x_edge_speed * dtime + priv->frac_x;
+    priv->frac_x = modf(tmpf, &integral);
+    dx = integral;
+    tmpf = dy + y_edge_speed * dtime + priv->frac_y;
+    priv->frac_y = modf(tmpf, &integral);
+    dy = integral;
+
+skip:
+    priv->count_packet_finger++;
+out:
     priv->prevFingers = hw->numFingers;
 
     *dxP = dx;
-- 
1.7.3.5



More information about the xorg-devel mailing list