Przeglądaj źródła

Force CPI update using timer when using split pointing. (#23545)

Dasky 2 lat temu
rodzic
commit
47bc02b2ff
1 zmienionych plików z 5 dodań i 4 usunięć
  1. 5 4
      quantum/split_common/transactions.c

+ 5 - 4
quantum/split_common/transactions.c

@@ -710,16 +710,17 @@ static bool pointing_handlers_master(matrix_row_t master_matrix[], matrix_row_t
         return true;
     }
 #    endif
-    static uint32_t last_update = 0;
-    static uint16_t last_cpi    = 0;
+    static uint32_t last_update     = 0;
+    static uint32_t last_cpi_update = 0;
+    static uint16_t last_cpi        = 0;
     report_mouse_t  temp_state;
     uint16_t        temp_cpi;
     bool            okay = read_if_checksum_mismatch(GET_POINTING_CHECKSUM, GET_POINTING_DATA, &last_update, &temp_state, &split_shmem->pointing.report, sizeof(temp_state));
     if (okay) pointing_device_set_shared_report(temp_state);
     temp_cpi = pointing_device_get_shared_cpi();
-    if (temp_cpi && last_cpi != temp_cpi) {
+    if (temp_cpi) {
         split_shmem->pointing.cpi = temp_cpi;
-        okay                      = transport_write(PUT_POINTING_CPI, &split_shmem->pointing.cpi, sizeof(split_shmem->pointing.cpi));
+        okay                      = send_if_condition(PUT_POINTING_CPI, &last_cpi_update, last_cpi != temp_cpi, &split_shmem->pointing.cpi, sizeof(split_shmem->pointing.cpi));
         if (okay) {
             last_cpi = temp_cpi;
         }