~ruther/qmk_firmware

c86baf3ecea618ce42263c06ac5d0922ea8817fa — Drashna Jaelre 3 years ago 2689e36
[Core] Fix bug and code regression for Split Common (#15603)

2 files changed, 10 insertions(+), 13 deletions(-)

M quantum/matrix_common.c
M quantum/split_common/split_util.h
M quantum/matrix_common.c => quantum/matrix_common.c +10 -12
@@ 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);

M quantum/split_common/split_util.h => quantum/split_common/split_util.h +0 -1
@@ 2,7 2,6 @@

#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

#include "matrix.h"