~ruther/qmk_firmware

703d8cd417115d6e37090e26e358cf73f6346113 — izmishi 2 years ago 8d8e70f
Fix retain brightness when val is changed while a layer is active (#18426)

* Fix retain brightness when val is changed while a layer is active

* Fix retain brightness for RGBLIGHT_MODE_STATIC_GRADIENT

* Fix formatting
1 files changed, 13 insertions(+), 5 deletions(-)

M quantum/rgblight/rgblight.c
M quantum/rgblight/rgblight.c => quantum/rgblight/rgblight.c +13 -5
@@ 523,10 523,19 @@ void rgblight_sethsv_noeeprom_old(uint8_t hue, uint8_t sat, uint8_t val) {

void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool write_to_eeprom) {
    if (rgblight_config.enable) {
#ifdef RGBLIGHT_SPLIT
        if (rgblight_config.hue != hue || rgblight_config.sat != sat || rgblight_config.val != val) {
            RGBLIGHT_SPLIT_SET_CHANGE_HSVS;
        }
#endif
        rgblight_status.base_mode = mode_base_table[rgblight_config.mode];
        if (rgblight_config.mode == RGBLIGHT_MODE_STATIC_LIGHT) {
            // same static color
            LED_TYPE tmp_led;
#ifdef RGBLIGHT_LAYERS_RETAIN_VAL
            // needed for rgblight_layers_write() to get the new val, since it reads rgblight_config.val
            rgblight_config.val = val;
#endif
            sethsv(hue, sat, val, &tmp_led);
            rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b);
        } else {


@@ 568,15 577,14 @@ void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool w
                    dprintf("rgblight rainbow set hsv: %d,%d,%d,%u\n", i, _hue, direction, range);
                    sethsv(_hue, sat, val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]);
                }
#    ifdef RGBLIGHT_LAYERS_RETAIN_VAL
                // needed for rgblight_layers_write() to get the new val, since it reads rgblight_config.val
                rgblight_config.val = val;
#    endif
                rgblight_set();
            }
#endif
        }
#ifdef RGBLIGHT_SPLIT
        if (rgblight_config.hue != hue || rgblight_config.sat != sat || rgblight_config.val != val) {
            RGBLIGHT_SPLIT_SET_CHANGE_HSVS;
        }
#endif
        rgblight_config.hue = hue;
        rgblight_config.sat = sat;
        rgblight_config.val = val;