Change RGBLIGHT_LAYERS_RETAIN_VAL to scale the segment's value instead of replace it

This commit is contained in:
Robert 2024-07-01 03:27:36 -07:00
parent 8991c54536
commit 4e47566739
1 changed files with 4 additions and 1 deletions

View File

@ -785,10 +785,13 @@ static void rgblight_layers_write(void) {
break; // No more segments
}
// Write segment.count LEDs
# ifdef RGBLIGHT_LAYERS_RETAIN_VAL
uint8_t scaled_segment_val = ((uint16_t)current_val * segment.val) >> 8;
# endif
rgb_led_t *const limit = &led[MIN(segment.index + segment.count, RGBLIGHT_LED_COUNT)];
for (rgb_led_t *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) {
# ifdef RGBLIGHT_LAYERS_RETAIN_VAL
sethsv(segment.hue, segment.sat, current_val, led_ptr);
sethsv(segment.hue, segment.sat, scaled_segment_val, led_ptr);
# else
sethsv(segment.hue, segment.sat, segment.val, led_ptr);
# endif