[XMP] Make volume atomic, fixed issue with invalid SetVolume received from guest

- Replaced invalid log
This commit is contained in:
Gliniak
2025-10-28 20:11:47 +01:00
parent a25bbed1c3
commit 344e8538e0
6 changed files with 12 additions and 7 deletions

View File

@@ -448,7 +448,7 @@ void AudioMediaPlayer::RemovePlaylist(uint32_t handle) {
}
X_STATUS AudioMediaPlayer::SetVolume(float volume) {
volume_ = std::min(volume, 1.0f);
volume_.store(std::min(volume, 1.0f));
std::unique_lock<xe_mutex> guard(driver_mutex_);
if (!driver_) {

View File

@@ -51,7 +51,7 @@ class AudioMediaPlayer {
bool IsLastSongInPlaylist() const;
X_STATUS SetVolume(float volume);
float GetVolume() const { return volume_; }
const std::atomic<float>* GetVolume() const { return &volume_; }
void SetPlaybackMode(XmpApp::PlaybackMode playback_mode) {
playback_mode_ = playback_mode;
@@ -106,7 +106,7 @@ class AudioMediaPlayer {
XmpApp::PlaybackMode playback_mode_ = XmpApp::PlaybackMode::kInOrder;
XmpApp::RepeatMode repeat_mode_ = XmpApp::RepeatMode::kPlaylist;
XmpApp::PlaybackFlags playback_flags_ = XmpApp::PlaybackFlags::kDefault;
float volume_ = 0.0f;
std::atomic<float> volume_ = 0.0f;
uint32_t dash_init_state = 0;
std::unordered_map<uint32_t, std::unique_ptr<XmpApp::Playlist>> playlists_;