RGB/LED matrix use limits size optimisation (#22325)
This commit is contained in:
parent
896d3dc497
commit
f293658147
4 changed files with 89 additions and 66 deletions
|
@ -410,6 +410,36 @@ __attribute__((weak)) bool rgb_matrix_indicators_user(void) {
|
|||
return true;
|
||||
}
|
||||
|
||||
struct rgb_matrix_limits_t rgb_matrix_get_limits(uint8_t iter) {
|
||||
struct rgb_matrix_limits_t limits = {0};
|
||||
#if defined(RGB_MATRIX_LED_PROCESS_LIMIT) && RGB_MATRIX_LED_PROCESS_LIMIT > 0 && RGB_MATRIX_LED_PROCESS_LIMIT < RGB_MATRIX_LED_COUNT
|
||||
# if defined(RGB_MATRIX_SPLIT)
|
||||
limits.led_min_index = RGB_MATRIX_LED_PROCESS_LIMIT * (iter);
|
||||
limits.led_max_index = limits.led_min_index + RGB_MATRIX_LED_PROCESS_LIMIT;
|
||||
if (limits.led_max_index > RGB_MATRIX_LED_COUNT) limits.led_max_index = RGB_MATRIX_LED_COUNT;
|
||||
uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT;
|
||||
if (is_keyboard_left() && (limits.led_max_index > k_rgb_matrix_split[0])) limits.led_max_index = k_rgb_matrix_split[0];
|
||||
if (!(is_keyboard_left()) && (limits.led_min_index < k_rgb_matrix_split[0])) limits.led_min_index = k_rgb_matrix_split[0];
|
||||
# else
|
||||
limits.led_min_index = RGB_MATRIX_LED_PROCESS_LIMIT * (iter);
|
||||
limits.led_max_index = limits.led_min_index + RGB_MATRIX_LED_PROCESS_LIMIT;
|
||||
if (limits.led_max_index > RGB_MATRIX_LED_COUNT) limits.led_max_index = RGB_MATRIX_LED_COUNT;
|
||||
# endif
|
||||
#else
|
||||
# if defined(RGB_MATRIX_SPLIT)
|
||||
limits.led_min_index = 0;
|
||||
limits.led_max_index = RGB_MATRIX_LED_COUNT;
|
||||
const uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT;
|
||||
if (is_keyboard_left() && (limits.led_max_index > k_rgb_matrix_split[0])) limits.led_max_index = k_rgb_matrix_split[0];
|
||||
if (!(is_keyboard_left()) && (limits.led_min_index < k_rgb_matrix_split[0])) limits.led_min_index = k_rgb_matrix_split[0];
|
||||
# else
|
||||
limits.led_min_index = 0;
|
||||
limits.led_max_index = RGB_MATRIX_LED_COUNT;
|
||||
# endif
|
||||
#endif
|
||||
return limits;
|
||||
}
|
||||
|
||||
void rgb_matrix_indicators_advanced(effect_params_t *params) {
|
||||
/* special handling is needed for "params->iter", since it's already been incremented.
|
||||
* Could move the invocations to rgb_task_render, but then it's missing a few checks
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue