| 42 | } |
| 43 | |
| 44 | static void HotkeyAdjustVolume(const s32 delta) |
| 45 | { |
| 46 | if (!VMManager::HasValidVM()) |
| 47 | return; |
| 48 | |
| 49 | // Volume-adjusting hotkeys override mute toggle hotkey. EmuConfig.SPU2.OutputMuted overrides hotkeys. |
| 50 | if (!SPU2::SetOutputMuted(false)) |
| 51 | { |
| 52 | Host::AddIconOSDMessage("VolumeChanged", ICON_FA_VOLUME_XMARK, TRANSLATE_STR("Hotkeys_Volume", "Volume: Muted in Settings")); |
| 53 | return; |
| 54 | } |
| 55 | |
| 56 | const s32 current_volume = static_cast<s32>(SPU2::GetOutputVolume()); |
| 57 | const s32 maximum_volume = static_cast<s32>(Pcsx2Config::SPU2Options::MAX_VOLUME); |
| 58 | const s32 new_volume = std::clamp(current_volume + delta, 0, maximum_volume); |
| 59 | |
| 60 | if (current_volume != new_volume) |
| 61 | SPU2::SetOutputVolume(static_cast<u32>(new_volume)); |
| 62 | |
| 63 | if (new_volume > 0 && new_volume < maximum_volume) |
| 64 | { |
| 65 | Host::AddIconOSDMessage("VolumeChanged", new_volume < 100 ? ICON_FA_VOLUME_LOW : ICON_FA_VOLUME_HIGH, |
| 66 | fmt::format(TRANSLATE_FS("Hotkeys_Volume", "Volume: {} to {}%"), delta < 0 ? TRANSLATE_STR("Hotkeys_Volume", "Decreased") : TRANSLATE_STR("Hotkeys_Volume", "Increased"), new_volume)); |
| 67 | } |
| 68 | else |
| 69 | { |
| 70 | Host::AddIconOSDMessage("VolumeChanged", delta < 0 ? ICON_FA_VOLUME_OFF : ICON_FA_VOLUME_HIGH, |
| 71 | fmt::format(TRANSLATE_FS("Hotkeys_Volume", "Volume: {} {}% Reached"), delta < 0 ? TRANSLATE_STR("Hotkeys_Volume", "Minimum") : TRANSLATE_STR("Hotkeys_Volume", "Maximum"), new_volume)); |
| 72 | } |
| 73 | } |
| 74 | |
| 75 | static void HotkeyToggleMute() |
| 76 | { |
no test coverage detected