optimize keyboard readout
authorkub <derkub@gmail.com>
Tue, 21 Jan 2025 21:22:08 +0000 (22:22 +0100)
committerkub <derkub@gmail.com>
Tue, 21 Jan 2025 21:22:41 +0000 (22:22 +0100)
in_sdl.c
input.c

index 524cda0..9bde4fd 100644 (file)
--- a/in_sdl.c
+++ b/in_sdl.c
@@ -450,7 +450,7 @@ static int in_sdl_update_kbd(void *drv_data, const int *binds, int *result)
 {
        struct in_sdl_state *state = drv_data;
        keybits_t mask;
-       int i, sym, bit, b;
+       int i, sym, bit, b = 0;
 
        collect_events(state, NULL, NULL);
 
@@ -462,11 +462,11 @@ static int in_sdl_update_kbd(void *drv_data, const int *binds, int *result)
                        if ((mask & 1) == 0)
                                continue;
                        sym = i * KEYBITS_WORD_BITS + bit;
-                       result[sym] = binds[sym];
+                       result[b++] = binds[sym];
                }
        }
 
-       return 0;
+       return b;
 }
 
 
diff --git a/input.c b/input.c
index cd50431..205efb1 100644 (file)
--- a/input.c
+++ b/input.c
@@ -339,7 +339,7 @@ int in_update_kbd(int *result)
        for (i = 0; i < in_dev_count; i++) {
                in_dev_t *dev = &in_devices[i];
                if (dev->probed && dev->binds != NULL)
-                       ret |= DRV(dev->drv_id).update_kbd(dev->drv_data, dev->kbd_binds, result);
+                       ret += DRV(dev->drv_id).update_kbd(dev->drv_data, dev->kbd_binds, result+ret);
        }
 
        return ret;