diff options
author | bunnei <bunneidev@gmail.com> | 2021-01-29 06:54:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-29 06:54:46 +0100 |
commit | b786568c5ae056f2d55854959029e72e58d62990 (patch) | |
tree | ccc2f2069e0d53e72d3f717b7598c2ae99e17d09 | |
parent | Merge pull request #5837 from german77/socketstub (diff) | |
parent | audout: FlushAudioOutBuffers (diff) | |
download | yuzu-b786568c5ae056f2d55854959029e72e58d62990.tar yuzu-b786568c5ae056f2d55854959029e72e58d62990.tar.gz yuzu-b786568c5ae056f2d55854959029e72e58d62990.tar.bz2 yuzu-b786568c5ae056f2d55854959029e72e58d62990.tar.lz yuzu-b786568c5ae056f2d55854959029e72e58d62990.tar.xz yuzu-b786568c5ae056f2d55854959029e72e58d62990.tar.zst yuzu-b786568c5ae056f2d55854959029e72e58d62990.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>(); |