diff options
author | Chloe Marcec <dmarcecguzman@gmail.com> | 2021-01-24 09:13:34 +0100 |
---|---|---|
committer | Chloe Marcec <dmarcecguzman@gmail.com> | 2021-01-24 09:13:34 +0100 |
commit | b2b95e96c159afe3226fe6a001ff780a38813fe4 (patch) | |
tree | 701c946a772d58bca5b1fd153c324a98d622ec04 | |
parent | Merge pull request #5806 from bunnei/am-stub (diff) | |
download | yuzu-b2b95e96c159afe3226fe6a001ff780a38813fe4.tar yuzu-b2b95e96c159afe3226fe6a001ff780a38813fe4.tar.gz yuzu-b2b95e96c159afe3226fe6a001ff780a38813fe4.tar.bz2 yuzu-b2b95e96c159afe3226fe6a001ff780a38813fe4.tar.lz yuzu-b2b95e96c159afe3226fe6a001ff780a38813fe4.tar.xz yuzu-b2b95e96c159afe3226fe6a001ff780a38813fe4.tar.zst yuzu-b2b95e96c159afe3226fe6a001ff780a38813fe4.zip |
-rw-r--r-- | src/audio_core/stream.cpp | 8 | ||||
-rw-r--r-- | src/audio_core/stream.h | 3 | ||||
-rw-r--r-- | src/core/hle/service/audio/audout_u.cpp | 10 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/audio_core/stream.cpp b/src/audio_core/stream.cpp index afe68c9ed..5b0b285cd 100644 --- a/src/audio_core/stream.cpp +++ b/src/audio_core/stream.cpp @@ -51,6 +51,14 @@ void Stream::Stop() { UNIMPLEMENTED(); } +bool Stream::Flush() { + const bool had_buffers = !queued_buffers.empty(); + while (!queued_buffers.empty()) { + queued_buffers.pop(); + } + return had_buffers; +} + void Stream::SetVolume(float volume) { game_volume = volume; } diff --git a/src/audio_core/stream.h b/src/audio_core/stream.h index 506ac536b..559844b9b 100644 --- a/src/audio_core/stream.h +++ b/src/audio_core/stream.h @@ -56,6 +56,9 @@ public: /// Queues a buffer into the audio stream, returns true on success bool QueueBuffer(BufferPtr&& buffer); + /// Flush audio buffers + bool Flush(); + /// Returns true if the audio stream contains a buffer with the specified tag [[nodiscard]] bool ContainsBuffer(Buffer::Tag tag) const; diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp index 02ca711fb..273a46265 100644 --- a/src/core/hle/service/audio/audout_u.cpp +++ b/src/core/hle/service/audio/audout_u.cpp @@ -58,7 +58,7 @@ public: {8, &IAudioOut::GetReleasedAudioOutBufferImpl, "GetReleasedAudioOutBufferAuto"}, {9, &IAudioOut::GetAudioOutBufferCount, "GetAudioOutBufferCount"}, {10, nullptr, "GetAudioOutPlayedSampleCount"}, - {11, nullptr, "FlushAudioOutBuffers"}, + {11, &IAudioOut::FlushAudioOutBuffers, "FlushAudioOutBuffers"}, {12, &IAudioOut::SetAudioOutVolume, "SetAudioOutVolume"}, {13, &IAudioOut::GetAudioOutVolume, "GetAudioOutVolume"}, }; @@ -185,6 +185,14 @@ private: rb.Push(static_cast<u32>(stream->GetQueueSize())); } + void FlushAudioOutBuffers(Kernel::HLERequestContext& ctx) { + LOG_DEBUG(Service_Audio, "called"); + + IPC::ResponseBuilder rb{ctx, 3}; + rb.Push(RESULT_SUCCESS); + rb.Push(stream->Flush()); + } + void SetAudioOutVolume(Kernel::HLERequestContext& ctx) { IPC::RequestParser rp{ctx}; const float volume = rp.Pop<float>(); |