From 282fcd458cc8e6ecd757174fe7f10271c323f0e7 Mon Sep 17 00:00:00 2001
From: Ryan Walklin <ryan@testtoast.com>
Date: Sat, 15 Dec 2018 14:57:25 +1100
Subject: Improve event matching logic

---
 rootston/switch.c | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

(limited to 'rootston')

diff --git a/rootston/switch.c b/rootston/switch.c
index 3ccaad6a..b480e054 100644
--- a/rootston/switch.c
+++ b/rootston/switch.c
@@ -15,19 +15,14 @@ void roots_switch_handle_toggle(struct roots_switch *lid_switch,
     wl_list_for_each(sc, bound_switches, link) {
         bool device_match = false;
         bool state_match = false;
-        if ((sc->name != NULL && strcmp(event->device->name, sc->name) == 0) ||
-                (sc->name == NULL && event->switch_type == sc->switch_type)) {
-            device_match = true;
+        if ((sc->name != NULL && strcmp(event->device->name, sc->name) != 0) &&
+                (sc->name == NULL && event->switch_type != sc->switch_type)) {
+            continue;
         }
-        if (!device_match) {
-            break;
-        }
-        if (sc->switch_state == WLR_SWITCH_STATE_TOGGLE ||
-                event->switch_state == sc->switch_state) {
-            state_match = true;
-        }
-        if (device_match && state_match) {
-            execute_binding_command(lid_switch->seat, lid_switch->seat->input, sc->command);
+        if (sc->switch_state != WLR_SWITCH_STATE_TOGGLE &&
+                event->switch_state != sc->switch_state) {
+            continue;
         }
+        execute_binding_command(lid_switch->seat, lid_switch->seat->input, sc->command);
     }
 }
-- 
cgit v1.2.3