diff options
author | SjB <steve@sagacity.ca> | 2017-01-21 02:01:55 -0500 |
---|---|---|
committer | SjB <steve@sagacity.ca> | 2017-01-23 23:16:57 -0500 |
commit | 2b3859937b1e7f96b684408d31ff12a4e682f7ee (patch) | |
tree | 07316357851485e07f741e49853f01fa1349a065 | |
parent | 841d7e6a1d74b1fc45575ed551132ec27353ebf3 (diff) | |
download | qmk_firmware-2b3859937b1e7f96b684408d31ff12a4e682f7ee.tar.gz qmk_firmware-2b3859937b1e7f96b684408d31ff12a4e682f7ee.zip |
speeding up (un)register_code16
In register_code16 and unregister_code16 we call register_code and
unregister_code twice, once for the mods and once for the keycode.
The (un)register_code have many check to see that keycode we have sent
however because we know that we are sending it a mods key, why not
just skip all of it and call (un)register_mods instead. This will skip
alot of checks and should speedup the loop a little.
-rw-r--r-- | quantum/quantum.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c index 63ffe2074e..1767faed42 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -33,14 +33,22 @@ static void do_code16 (uint16_t code, void (*f) (uint8_t)) { f(KC_RGUI); } +static inline void qk_register_mods(uint8_t kc) { + register_mods(MOD_BIT(kc)); +} + +static inline void qk_unregister_mods(uint8_t kc) { + unregister_mods(MOD_BIT(kc)); +} + void register_code16 (uint16_t code) { - do_code16 (code, register_code); + do_code16 (code, qk_register_mods); register_code (code); } void unregister_code16 (uint16_t code) { unregister_code (code); - do_code16 (code, unregister_code); + do_code16 (code, qk_unregister_mods); } __attribute__ ((weak)) |