summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/audio
diff options
context:
space:
mode:
authorKelebek1 <eeeedddccc@hotmail.co.uk>2022-08-24 18:33:10 +0200
committerKelebek1 <eeeedddccc@hotmail.co.uk>2022-08-24 19:14:21 +0200
commit56f1dc8dad7657bc0bb209fd8cd8af190bae8de9 (patch)
tree6de09f536f9cbb8de5e87338b6957d55bbf94596 /src/core/hle/service/audio
parentMerge pull request #8772 from liushuyu/remove-common-intrin (diff)
downloadyuzu-56f1dc8dad7657bc0bb209fd8cd8af190bae8de9.tar
yuzu-56f1dc8dad7657bc0bb209fd8cd8af190bae8de9.tar.gz
yuzu-56f1dc8dad7657bc0bb209fd8cd8af190bae8de9.tar.bz2
yuzu-56f1dc8dad7657bc0bb209fd8cd8af190bae8de9.tar.lz
yuzu-56f1dc8dad7657bc0bb209fd8cd8af190bae8de9.tar.xz
yuzu-56f1dc8dad7657bc0bb209fd8cd8af190bae8de9.tar.zst
yuzu-56f1dc8dad7657bc0bb209fd8cd8af190bae8de9.zip
Diffstat (limited to 'src/core/hle/service/audio')
-rw-r--r--src/core/hle/service/audio/audren_u.cpp27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp
index 381a66ba5..bc69117c6 100644
--- a/src/core/hle/service/audio/audren_u.cpp
+++ b/src/core/hle/service/audio/audren_u.cpp
@@ -50,7 +50,7 @@ public:
{7, &IAudioRenderer::QuerySystemEvent, "QuerySystemEvent"},
{8, &IAudioRenderer::SetRenderingTimeLimit, "SetRenderingTimeLimit"},
{9, &IAudioRenderer::GetRenderingTimeLimit, "GetRenderingTimeLimit"},
- {10, nullptr, "RequestUpdateAuto"},
+ {10, &IAudioRenderer::RequestUpdate, "RequestUpdateAuto"},
{11, nullptr, "ExecuteAudioRendererRendering"},
};
// clang-format on
@@ -113,15 +113,30 @@ private:
// These buffers are written manually to avoid an issue with WriteBuffer throwing errors for
// checking size 0. Performance size is 0 for most games.
- const auto buffers{ctx.BufferDescriptorB()};
- std::vector<u8> output(buffers[0].Size(), 0);
- std::vector<u8> performance(buffers[1].Size(), 0);
+
+ std::vector<u8> output{};
+ std::vector<u8> performance{};
+ auto is_buffer_b{ctx.BufferDescriptorB()[0].Size() != 0};
+ if (is_buffer_b) {
+ const auto buffersB{ctx.BufferDescriptorB()};
+ output.resize(buffersB[0].Size(), 0);
+ performance.resize(buffersB[1].Size(), 0);
+ } else {
+ const auto buffersC{ctx.BufferDescriptorC()};
+ output.resize(buffersC[0].Size(), 0);
+ performance.resize(buffersC[1].Size(), 0);
+ }
auto result = impl->RequestUpdate(input, performance, output);
if (result.IsSuccess()) {
- ctx.WriteBufferB(output.data(), output.size(), 0);
- ctx.WriteBufferB(performance.data(), performance.size(), 1);
+ if (is_buffer_b) {
+ ctx.WriteBufferB(output.data(), output.size(), 0);
+ ctx.WriteBufferB(performance.data(), performance.size(), 1);
+ } else {
+ ctx.WriteBufferC(output.data(), output.size(), 0);
+ ctx.WriteBufferC(performance.data(), performance.size(), 1);
+ }
} else {
LOG_ERROR(Service_Audio, "RequestUpdate failed error 0x{:02X}!", result.description);
}