From b19b95c00fbc42ad10e227d17dce9ffa8cd95f13 Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Wed, 1 Oct 2025 18:01:35 +0100 Subject: [PATCH] sound: update global volume state in sound_set_volume() Instead of calling sound_set_volume() and then manually setting global_status.volume to match, update the global volume state directly in sound_set_volume(). This makes things a bit simpler and less error-prone. Change-Id: I4db4d60ae1a72bd051ef49c90b1ae7f5ba59e535 --- apps/gui/option_select.c | 3 --- apps/misc.c | 3 +-- apps/plugins/beatbox/beatbox.c | 2 -- apps/plugins/doom/m_menu.c | 2 -- apps/plugins/midi/midiplay.c | 2 -- apps/plugins/mpegplayer/mpegplayer.c | 4 +--- apps/plugins/oscilloscope.c | 2 -- apps/plugins/test_sampr.c | 1 - apps/plugins/vu_meter.c | 1 - firmware/sound.c | 5 +++++ 10 files changed, 7 insertions(+), 18 deletions(-) diff --git a/apps/gui/option_select.c b/apps/gui/option_select.c index c7eab6aba1..a50a1c4dc7 100644 --- a/apps/gui/option_select.c +++ b/apps/gui/option_select.c @@ -594,9 +594,6 @@ bool option_screen(const struct settings_list *setting, if (!cb_on_changed || (*variable != oldvalue)) { function(*variable); - /* if the volume is changing we need to let the skins know */ - if (function == sound_get_fn(SOUND_VOLUME)) - global_status.last_volume_change = current_tick; } } diff --git a/apps/misc.c b/apps/misc.c index 40d06b9dc1..244f7c503f 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -877,9 +877,8 @@ void setvol(void) volume = max_vol; if (volume > global_settings.volume_limit) volume = global_settings.volume_limit; - global_status.volume = volume; + sound_set_volume(volume); - global_status.last_volume_change = current_tick; status_save(false); } diff --git a/apps/plugins/beatbox/beatbox.c b/apps/plugins/beatbox/beatbox.c index 56ef25a579..99d883a028 100644 --- a/apps/plugins/beatbox/beatbox.c +++ b/apps/plugins/beatbox/beatbox.c @@ -606,7 +606,6 @@ int beatboxmain() { vol++; rb->sound_set(SOUND_VOLUME, vol); - rb->global_status->volume = vol; } break; @@ -617,7 +616,6 @@ int beatboxmain() { vol--; rb->sound_set(SOUND_VOLUME, vol); - rb->global_status->volume = vol; } break; diff --git a/apps/plugins/doom/m_menu.c b/apps/plugins/doom/m_menu.c index 123f5ed82c..bf241aa097 100644 --- a/apps/plugins/doom/m_menu.c +++ b/apps/plugins/doom/m_menu.c @@ -878,7 +878,6 @@ void M_SystemVol(int choice) { systemvol-=5; rb->sound_set(SOUND_VOLUME, systemvol); - rb->global_status->volume = systemvol; } break; case 1: @@ -886,7 +885,6 @@ void M_SystemVol(int choice) { systemvol+=5; rb->sound_set(SOUND_VOLUME, systemvol); - rb->global_status->volume = systemvol; } break; } diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c index 67a789977a..04636e7e5b 100644 --- a/apps/plugins/midi/midiplay.c +++ b/apps/plugins/midi/midiplay.c @@ -601,7 +601,6 @@ static int midimain(const void * filename) { vol++; rb->sound_set(SOUND_VOLUME, vol); - rb->global_status->volume = vol; } break; } @@ -614,7 +613,6 @@ static int midimain(const void * filename) { vol--; rb->sound_set(SOUND_VOLUME, vol); - rb->global_status->volume = vol; } break; } diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c index 1ece91d908..ebbf573083 100644 --- a/apps/plugins/mpegplayer/mpegplayer.c +++ b/apps/plugins/mpegplayer/mpegplayer.c @@ -1897,10 +1897,8 @@ static void osd_set_volume(int delta) } /* Sync the global settings */ - if (vol != rb->global_status->volume) { + if (vol != rb->global_status->volume) rb->sound_set(SOUND_VOLUME, vol); - rb->global_status->volume = vol; - } /* Update the volume display */ osd_refresh(OSD_REFRESH_VOLUME); diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c index 576d92f64e..670b34be0c 100644 --- a/apps/plugins/oscilloscope.c +++ b/apps/plugins/oscilloscope.c @@ -2131,7 +2131,6 @@ enum plugin_status plugin_start(const void* parameter) { vol++; rb->sound_set(SOUND_VOLUME, vol); - rb->global_status->volume = vol; } osc_popupmsg(OSC_MSG_VOLUME, vol); @@ -2147,7 +2146,6 @@ enum plugin_status plugin_start(const void* parameter) { vol--; rb->sound_set(SOUND_VOLUME, vol); - rb->global_status->volume = vol; } osc_popupmsg(OSC_MSG_VOLUME, vol); diff --git a/apps/plugins/test_sampr.c b/apps/plugins/test_sampr.c index 7f3da6ced8..d972ecdefa 100644 --- a/apps/plugins/test_sampr.c +++ b/apps/plugins/test_sampr.c @@ -174,7 +174,6 @@ static void set_frequency(int index) #ifndef HAVE_VOLUME_IN_LIST static void set_volume(int value) { - rb->global_status->volume = value; rb->sound_set(SOUND_VOLUME, value); } diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c index 3f759db513..cd9f50a2c6 100644 --- a/apps/plugins/vu_meter.c +++ b/apps/plugins/vu_meter.c @@ -654,7 +654,6 @@ static void change_volume(int delta) { else if (vol < minvol) vol = minvol; if (vol != rb->global_status->volume) { rb->sound_set(SOUND_VOLUME, vol); - rb->global_status->volume = vol; rb->lcd_putsxyf(0,0, "%d", vol); rb->lcd_update(); rb->sleep(HZ/12); diff --git a/firmware/sound.c b/firmware/sound.c index 70883168bf..798529af3e 100644 --- a/firmware/sound.c +++ b/firmware/sound.c @@ -316,6 +316,11 @@ void sound_set_volume(int value) if (!audio_is_initialized) return; +#ifndef BOOTLOADER + global_status.volume = value; + global_status.last_volume_change = current_tick; +#endif + #if defined(AUDIOHW_HAVE_CLIPPING) audiohw_set_volume(value); #else