[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

@@ -262,7 +262,7 @@ X_HRESULT XmpApp::DispatchMessageSync(uint32_t message, uint32_t buffer_ptr,
xe::store_and_swap<float>(
memory_->TranslateVirtual(args->volume_ptr),
kernel_state_->emulator()->audio_media_player()->GetVolume());
kernel_state_->emulator()->audio_media_player()->GetVolume()->load());
return X_E_SUCCESS;
}
case 0x0007000C: {
@@ -401,7 +401,7 @@ X_HRESULT XmpApp::DispatchMessageSync(uint32_t message, uint32_t buffer_ptr,
XMP_CREATE_USER_PLAYLIST_ENUMERATOR* args =
reinterpret_cast<XMP_CREATE_USER_PLAYLIST_ENUMERATOR*>(buffer);
XELOGD("XMPSetPlaybackController({:08X}, {:08X}, {:08X})",
XELOGD("XMPCreateUserPlaylistEnumerator({:08X}, {:08X}, {:08X})",
uint32_t(args->xmp_client), uint32_t(args->flags),
uint32_t(args->unk_ptr));
return X_E_SUCCESS;

View File

@@ -86,7 +86,7 @@ static_assert_size(XMP_GET_VOLUME, 0x8);
struct XMP_SET_VOLUME {
xe::be<uint32_t> xmp_client;
xe::be<uint32_t> value;
xe::be<float> value;
};
static_assert_size(XMP_SET_VOLUME, 0x8);