summaryrefslogtreecommitdiffstats
path: root/quantum
diff options
context:
space:
mode:
authorSjB <steve@sagacity.ca>2017-01-21 08:01:55 +0100
committerSjB <steve@sagacity.ca>2017-01-24 05:16:57 +0100
commit2b3859937b1e7f96b684408d31ff12a4e682f7ee (patch)
tree07316357851485e07f741e49853f01fa1349a065 /quantum
parent841d7e6a1d74b1fc45575ed551132ec27353ebf3 (diff)
downloadqmk_firmware-2b3859937b1e7f96b684408d31ff12a4e682f7ee.tar.gz
qmk_firmware-2b3859937b1e7f96b684408d31ff12a4e682f7ee.tar.xz
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.
Diffstat (limited to 'quantum')
-rw-r--r--quantum/quantum.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 63ffe2074..1767faed4 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))