summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordexter93 <d3xter93@gmail.com>2023-06-08 04:01:45 +0300
committerGitHub <noreply@github.com>2023-06-08 02:01:45 +0100
commit90ea9e447adb16151974c8d29c18bbb140bde9dc (patch)
tree9bad379c498fdcff6104c9573cfa8c25b9a3e9fa
parenta059d121fa17026ab55106fd9ee4b4ea8159a183 (diff)
Reset `matrix_need_update` properly in eager debouncing algorithms (#21154)
The `matrix_need_update` variable needs to be reset to `false` in `transfer_matrix_values()`, otherwise that function continues to be invoked for every scanning loop (forever with `sym_eager_pk` and `sym_eager_pk`, or until some key gets released with `asym_eager_defer_pk`), and the scanning rate gets much lower because of all that useless work. Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
-rw-r--r--quantum/debounce/asym_eager_defer_pk.c2
-rw-r--r--quantum/debounce/sym_eager_pk.c1
-rw-r--r--quantum/debounce/sym_eager_pr.c1
3 files changed, 4 insertions, 0 deletions
diff --git a/quantum/debounce/asym_eager_defer_pk.c b/quantum/debounce/asym_eager_defer_pk.c
index 4745c6f465..0f7640a80c 100644
--- a/quantum/debounce/asym_eager_defer_pk.c
+++ b/quantum/debounce/asym_eager_defer_pk.c
@@ -144,6 +144,8 @@ static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[],
static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows) {
debounce_counter_t *debounce_pointer = debounce_counters;
+ matrix_need_update = false;
+
for (uint8_t row = 0; row < num_rows; row++) {
matrix_row_t delta = raw[row] ^ cooked[row];
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
diff --git a/quantum/debounce/sym_eager_pk.c b/quantum/debounce/sym_eager_pk.c
index f736d1645c..15360441de 100644
--- a/quantum/debounce/sym_eager_pk.c
+++ b/quantum/debounce/sym_eager_pk.c
@@ -125,6 +125,7 @@ static void update_debounce_counters(uint8_t num_rows, uint8_t elapsed_time) {
// upload from raw_matrix to final matrix;
static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows) {
+ matrix_need_update = false;
debounce_counter_t *debounce_pointer = debounce_counters;
for (uint8_t row = 0; row < num_rows; row++) {
matrix_row_t delta = raw[row] ^ cooked[row];
diff --git a/quantum/debounce/sym_eager_pr.c b/quantum/debounce/sym_eager_pr.c
index aad5ca351b..84f897d674 100644
--- a/quantum/debounce/sym_eager_pr.c
+++ b/quantum/debounce/sym_eager_pr.c
@@ -119,6 +119,7 @@ static void update_debounce_counters(uint8_t num_rows, uint8_t elapsed_time) {
// upload from raw_matrix to final matrix;
static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows) {
+ matrix_need_update = false;
debounce_counter_t *debounce_pointer = debounce_counters;
for (uint8_t row = 0; row < num_rows; row++) {
matrix_row_t existing_row = cooked[row];