From c86baf3ecea618ce42263c06ac5d0922ea8817fa Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Mon, 27 Dec 2021 15:01:51 -0800 Subject: [PATCH] [Core] Fix bug and code regression for Split Common (#15603) --- quantum/matrix_common.c | 22 ++++++++++------------ quantum/split_common/split_util.h | 1 - 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/quantum/matrix_common.c b/quantum/matrix_common.c index 79f77421e1e..5fdc9186fa4 100644 --- a/quantum/matrix_common.c +++ b/quantum/matrix_common.c @@ -95,24 +95,22 @@ uint8_t matrix_key_count(void) { bool matrix_post_scan(void) { bool changed = false; if (is_keyboard_master()) { + static bool last_connected = false; matrix_row_t slave_matrix[ROWS_PER_HAND] = {0}; if (transport_master_if_connected(matrix + thisHand, slave_matrix)) { - for (int i = 0; i < ROWS_PER_HAND; ++i) { - if (matrix[thatHand + i] != slave_matrix[i]) { - matrix[thatHand + i] = slave_matrix[i]; - changed = true; - } - } - } else { - // reset other half if disconnected - for (int i = 0; i < ROWS_PER_HAND; ++i) { - matrix[thatHand + i] = 0; - slave_matrix[i] = 0; - } + changed = memcmp(matrix + thatHand, slave_matrix, sizeof(slave_matrix)) != 0; + last_connected = true; + } else if (last_connected) { + // reset other half when disconnected + memset(slave_matrix, 0, sizeof(slave_matrix)); changed = true; + + last_connected = false; } + if (changed) memcpy(matrix + thatHand, slave_matrix, sizeof(slave_matrix)); + matrix_scan_quantum(); } else { transport_slave(matrix + thatHand, matrix + thisHand); diff --git a/quantum/split_common/split_util.h b/quantum/split_common/split_util.h index ef72043bb78..c7eabea2332 100644 --- a/quantum/split_common/split_util.h +++ b/quantum/split_common/split_util.h @@ -2,7 +2,6 @@ #include #include -#include #include #include "matrix.h"