Switch some uint32_t usage loops to use evdev_usage_next

Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215>
This commit is contained in:
Peter Hutterer 2025-06-06 11:58:53 +10:00
parent 1c5715fedf
commit c4d0d2c09d
4 changed files with 23 additions and 14 deletions

View file

@ -488,8 +488,9 @@ fallback_debounce_handle_state(struct fallback_dispatch *dispatch,
size_t nchanged = 0;
bool flushed = false;
for (uint32_t u = EVDEV_KEY_RESERVED; u <= EVDEV_KEY_MAX; u++) {
evdev_usage_t usage = evdev_usage_from_uint32_t(u);
for (evdev_usage_t usage = evdev_usage_from(EVDEV_KEY_RESERVED);
evdev_usage_le(usage, EVDEV_KEY_MAX);
usage = evdev_usage_next(usage)) {
if (get_key_type(usage) != KEY_TYPE_BUTTON)
continue;

View file

@ -808,9 +808,9 @@ static inline bool
fallback_any_button_down(struct fallback_dispatch *dispatch,
struct evdev_device *device)
{
uint32_t button;
for (button = EVDEV_BTN_LEFT; button < EVDEV_BTN_JOYSTICK; button++) {
evdev_usage_t usage = evdev_usage_from_uint32_t(button);
for (evdev_usage_t usage = evdev_usage_from(EVDEV_BTN_LEFT);
evdev_usage_lt(usage, EVDEV_BTN_JOYSTICK);
usage = evdev_usage_next(usage)) {
if (libevdev_has_event_code(device->evdev,
EV_KEY,
evdev_usage_code(usage)) &&
@ -959,8 +959,9 @@ fallback_handle_state(struct fallback_dispatch *dispatch,
/* Buttons and keys */
if (dispatch->pending_event & EVDEV_KEY) {
bool want_debounce = false;
for (uint32_t u = EVDEV_KEY_RESERVED; u <= EVDEV_KEY_MAX; u++) {
evdev_usage_t usage = evdev_usage_from_uint32_t(u);
for (evdev_usage_t usage = evdev_usage_from(EVDEV_KEY_RESERVED);
evdev_usage_le(usage, EVDEV_KEY_MAX);
usage = evdev_usage_next(usage)) {
if (!hw_key_has_changed(dispatch, usage))
continue;
@ -1057,8 +1058,9 @@ release_pressed_keys(struct fallback_dispatch *dispatch,
struct evdev_device *device,
uint64_t time)
{
for (uint32_t u = EVDEV_KEY_RESERVED; u <= EVDEV_KEY_MAX; u++) {
evdev_usage_t usage = evdev_usage_from_uint32_t(u);
for (evdev_usage_t usage = evdev_usage_from(EVDEV_KEY_RESERVED);
evdev_usage_le(usage, EVDEV_KEY_MAX);
usage = evdev_usage_next(usage)) {
int count = get_key_down_count(device, usage);
if (count == 0)
@ -1067,7 +1069,7 @@ release_pressed_keys(struct fallback_dispatch *dispatch,
if (count > 1) {
evdev_log_bug_libinput(device,
"key %d is down %d times.\n",
u,
evdev_usage_code(usage),
count);
}

View file

@ -191,6 +191,12 @@ evdev_usage_type_name(evdev_usage_t usage)
return libevdev_event_type_get_name(evdev_usage_type(usage));
}
static inline evdev_usage_t
evdev_usage_next(evdev_usage_t usage)
{
return evdev_usage_from_code(evdev_usage_type(usage), evdev_usage_code(usage) + 1);
}
struct evdev_event {
/* this may be a value outside the known usages above but it's just an int */
evdev_usage_t usage;

View file

@ -629,11 +629,11 @@ pad_suspend(struct evdev_dispatch *dispatch,
{
struct pad_dispatch *pad = pad_dispatch(dispatch);
struct libinput *libinput = pad_libinput_context(pad);
unsigned int code;
for (code = KEY_ESC; code < KEY_CNT; code++) {
evdev_usage_t usage = evdev_usage_from_code(EV_KEY, code);
if (pad_button_is_down(pad, code))
for (evdev_usage_t usage = evdev_usage_from(EVDEV_KEY_ESC);
evdev_usage_le(usage, EVDEV_KEY_MAX);
usage = evdev_usage_next(usage)) {
if (pad_button_is_down(pad, evdev_usage_code(usage)))
pad_button_set_down(pad, usage, false);
}