From 7b31fc54df6543e3426cce159a915fdaa947b57d Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Wed, 26 Jan 2022 19:24:29 +0000 Subject: [PATCH] Enable a default task throttle for split pointing. (#15925) --- docs/feature_pointing_device.md | 2 +- quantum/pointing_device.c | 6 +----- quantum/pointing_device.h | 3 +++ quantum/split_common/transactions.c | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md index 84ab885738..1972406ff7 100644 --- a/docs/feature_pointing_device.md +++ b/docs/feature_pointing_device.md @@ -204,7 +204,7 @@ void pointing_device_driver_set_cpi(uint16_t cpi) {} |`POINTING_DEVICE_MOTION_PIN` | (Optional) If supported, will only read from sensor if pin is active. | _not defined_ | |`POINTING_DEVICE_TASK_THROTTLE_MS` | (Optional) Limits the frequency that the sensor is polled for motion. | _not defined_ | -!> When using `SPLIT_POINTING_ENABLE` the `POINTING_DEVICE_MOTION_PIN` functionality is not supported and would recommend `POINTING_DEVICE_TASK_THROTTLE_MS` be set to `1`. Increasing this value will increase transport performance at the cost of possible mouse responsiveness. +!> When using `SPLIT_POINTING_ENABLE` the `POINTING_DEVICE_MOTION_PIN` functionality is not supported and `POINTING_DEVICE_TASK_THROTTLE_MS` will default to `1`. Increasing this value will increase transport performance at the cost of possible mouse responsiveness. ## Split Keyboard Configuration diff --git a/quantum/pointing_device.c b/quantum/pointing_device.c index 23d93fa15f..cce292e0bf 100644 --- a/quantum/pointing_device.c +++ b/quantum/pointing_device.c @@ -217,16 +217,12 @@ __attribute__((weak)) void pointing_device_task(void) { }; #endif -#if defined(POINTING_DEVICE_TASK_THROTTLE_MS) +#if (POINTING_DEVICE_TASK_THROTTLE_MS > 0) static uint32_t last_exec = 0; if (timer_elapsed32(last_exec) < POINTING_DEVICE_TASK_THROTTLE_MS) { return; } last_exec = timer_read32(); -#else -# if defined(SPLIT_POINTING_ENABLE) -# pragma message("It's recommended you enable a throttle when sharing pointing devices.") -# endif #endif // Gather report info diff --git a/quantum/pointing_device.h b/quantum/pointing_device.h index 6ff267e491..8394c20952 100644 --- a/quantum/pointing_device.h +++ b/quantum/pointing_device.h @@ -94,6 +94,9 @@ report_mouse_t pointing_device_adjust_by_defines(report_mouse_t mouse_report); #if defined(SPLIT_POINTING_ENABLE) void pointing_device_set_shared_report(report_mouse_t report); uint16_t pointing_device_get_shared_cpi(void); +# if !defined(POINTING_DEVICE_TASK_THROTTLE_MS) +# define POINTING_DEVICE_TASK_THROTTLE_MS 1 +# endif # if defined(POINTING_DEVICE_COMBINED) void pointing_device_set_cpi_on_side(bool left, uint16_t cpi); report_mouse_t pointing_device_combine_reports(report_mouse_t left_report, report_mouse_t right_report); diff --git a/quantum/split_common/transactions.c b/quantum/split_common/transactions.c index 81f9836382..d9e8fd1f6b 100644 --- a/quantum/split_common/transactions.c +++ b/quantum/split_common/transactions.c @@ -624,7 +624,7 @@ static void pointing_handlers_slave(matrix_row_t master_matrix[], matrix_row_t s # endif report_mouse_t temp_report; uint16_t temp_cpi; -# ifdef POINTING_DEVICE_TASK_THROTTLE_MS +# if (POINTING_DEVICE_TASK_THROTTLE_MS > 0) static uint32_t last_exec = 0; if (timer_elapsed32(last_exec) < POINTING_DEVICE_TASK_THROTTLE_MS) { return;