Improve event matching logic
This commit is contained in:
parent
8f5ec5e2bb
commit
282fcd458c
|
@ -15,19 +15,14 @@ void roots_switch_handle_toggle(struct roots_switch *lid_switch,
|
||||||
wl_list_for_each(sc, bound_switches, link) {
|
wl_list_for_each(sc, bound_switches, link) {
|
||||||
bool device_match = false;
|
bool device_match = false;
|
||||||
bool state_match = false;
|
bool state_match = false;
|
||||||
if ((sc->name != NULL && strcmp(event->device->name, sc->name) == 0) ||
|
if ((sc->name != NULL && strcmp(event->device->name, sc->name) != 0) &&
|
||||||
(sc->name == NULL && event->switch_type == sc->switch_type)) {
|
(sc->name == NULL && event->switch_type != sc->switch_type)) {
|
||||||
device_match = true;
|
continue;
|
||||||
}
|
}
|
||||||
if (!device_match) {
|
if (sc->switch_state != WLR_SWITCH_STATE_TOGGLE &&
|
||||||
break;
|
event->switch_state != sc->switch_state) {
|
||||||
}
|
continue;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
execute_binding_command(lid_switch->seat, lid_switch->seat->input, sc->command);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue