VPAD: report gamepad volume slider position even when audio playback is disabled or failed to init

This commit is contained in:
goeiecool9999 2025-09-11 13:13:24 +02:00
parent 158c4e17a2
commit 492116a6ba
2 changed files with 6 additions and 10 deletions

View file

@ -413,13 +413,12 @@ namespace snd_core
} }
} }
g_padVolume = GetConfig().pad_volume;
if (!g_padAudio) if (!g_padAudio)
{ {
try try
{ {
g_padAudio = IAudioAPI::CreateDeviceFromConfig(IAudioAPI::AudioType::Gamepad, 48000, snd_core::AX_SAMPLES_PER_3MS_48KHZ * AX_FRAMES_PER_GROUP, 16); g_padAudio = IAudioAPI::CreateDeviceFromConfig(IAudioAPI::AudioType::Gamepad, 48000, snd_core::AX_SAMPLES_PER_3MS_48KHZ * AX_FRAMES_PER_GROUP, 16);
if(g_padAudio)
g_padVolume = g_padAudio->GetVolume();
} }
catch (std::runtime_error& ex) catch (std::runtime_error& ex)
{ {

View file

@ -1191,10 +1191,9 @@ void GeneralSettings2::OnVolumeChanged(wxCommandEvent& event)
if(event.GetEventObject() == m_pad_volume) if(event.GetEventObject() == m_pad_volume)
{ {
if (g_padAudio) if (g_padAudio)
{
g_padAudio->SetVolume(event.GetInt()); g_padAudio->SetVolume(event.GetInt());
g_padVolume = event.GetInt();
} g_padVolume = event.GetInt();
} }
else if (event.GetEventObject() == m_tv_volume) else if (event.GetEventObject() == m_tv_volume)
{ {
@ -1216,11 +1215,8 @@ void GeneralSettings2::OnInputVolumeChanged(wxCommandEvent& event)
{ {
std::shared_lock lock(g_audioMutex); std::shared_lock lock(g_audioMutex);
if (g_padAudio) if (g_padAudio)
{
g_padAudio->SetInputVolume(event.GetInt()); g_padAudio->SetInputVolume(event.GetInt());
g_padVolume = event.GetInt();
}
event.Skip(); event.Skip();
} }
@ -1913,11 +1909,12 @@ void GeneralSettings2::UpdateAudioDevice()
else else
channels = CemuConfig::AudioChannelsToNChannels(config.pad_channels); channels = CemuConfig::AudioChannelsToNChannels(config.pad_channels);
g_padVolume = m_pad_volume->GetValue();
try try
{ {
g_padAudio = IAudioAPI::CreateDevice((IAudioAPI::AudioAPI)config.audio_api, description->GetDescription(), 48000, channels, snd_core::AX_SAMPLES_PER_3MS_48KHZ * AX_FRAMES_PER_GROUP, 16); g_padAudio = IAudioAPI::CreateDevice((IAudioAPI::AudioAPI)config.audio_api, description->GetDescription(), 48000, channels, snd_core::AX_SAMPLES_PER_3MS_48KHZ * AX_FRAMES_PER_GROUP, 16);
g_padAudio->SetVolume(m_pad_volume->GetValue()); g_padAudio->SetVolume(m_pad_volume->GetValue());
g_padVolume = m_pad_volume->GetValue();
} }
catch (std::runtime_error& ex) catch (std::runtime_error& ex)
{ {