fallback: change a list of if conditions to a switch statement
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 13 Jul 2018 05:41:59 +0000 (15:41 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Fri, 3 Aug 2018 03:29:20 +0000 (13:29 +1000)
This used to do a lot more but now it can be handled as simple switch
statement. Bonus: we get to log a bug if we ever get here in NONE state.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
src/evdev-fallback.c

index 55c585e..292f98b 100644 (file)
@@ -825,23 +825,32 @@ fallback_handle_state(struct fallback_dispatch *dispatch,
                        if (!slot->dirty)
                                continue;
 
-                       if (slot->state == SLOT_STATE_BEGIN) {
+                       switch (slot->state) {
+                       case SLOT_STATE_BEGIN:
                                sent = fallback_flush_mt_down(dispatch,
                                                              device,
                                                              i,
                                                              time);
                                slot->state = SLOT_STATE_UPDATE;
-                       } else if (slot->state == SLOT_STATE_UPDATE) {
+                               break;
+                       case SLOT_STATE_UPDATE:
                                sent = fallback_flush_mt_motion(dispatch,
                                                                device,
                                                                i,
                                                                time);
-                       } else if (slot->state == SLOT_STATE_END) {
+                               break;
+                       case SLOT_STATE_END:
                                sent = fallback_flush_mt_up(dispatch,
                                                            device,
                                                            i,
                                                            time);
                                slot->state = SLOT_STATE_NONE;
+                               break;
+                       case SLOT_STATE_NONE:
+                               /* touch arbitration may swallow the begin,
+                                * so we may get updates for a touch still
+                                * in NONE state */
+                               break;
                        }
 
                        slot->dirty = false;