From 2f6a6113118a6d23bc88b7c3e3d1bfee28c11f63 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 23 Sep 2018 20:01:02 -0400 Subject: [PATCH] stream: Preserve enum class type in GetState() Preserves the meaning/type-safetiness of the stream state instead of making it an opaque u32. This makes it usable for other things outside of the service HLE context. --- src/audio_core/audio_renderer.cpp | 2 +- src/audio_core/audio_renderer.h | 2 +- src/audio_core/stream.cpp | 4 ++-- src/audio_core/stream.h | 14 +++++++------- src/core/hle/service/audio/audren_u.cpp | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/audio_core/audio_renderer.cpp b/src/audio_core/audio_renderer.cpp index 521b19ff7f..6f0ff953a3 100644 --- a/src/audio_core/audio_renderer.cpp +++ b/src/audio_core/audio_renderer.cpp @@ -79,7 +79,7 @@ u32 AudioRenderer::GetMixBufferCount() const { return worker_params.mix_buffer_count; } -u32 AudioRenderer::GetState() const { +Stream::State AudioRenderer::GetStreamState() const { return stream->GetState(); } diff --git a/src/audio_core/audio_renderer.h b/src/audio_core/audio_renderer.h index be923ee650..dfef89e1d0 100644 --- a/src/audio_core/audio_renderer.h +++ b/src/audio_core/audio_renderer.h @@ -170,7 +170,7 @@ public: u32 GetSampleRate() const; u32 GetSampleCount() const; u32 GetMixBufferCount() const; - u32 GetState() const; + Stream::State GetStreamState() const; private: class VoiceState; diff --git a/src/audio_core/stream.cpp b/src/audio_core/stream.cpp index ee4aa98afc..742a5e0a0f 100644 --- a/src/audio_core/stream.cpp +++ b/src/audio_core/stream.cpp @@ -53,8 +53,8 @@ void Stream::Stop() { ASSERT_MSG(false, "Unimplemented"); } -u32 Stream::GetState() const { - return static_cast(state); +Stream::State Stream::GetState() const { + return state; } s64 Stream::GetBufferReleaseCycles(const Buffer& buffer) const { diff --git a/src/audio_core/stream.h b/src/audio_core/stream.h index 43eca74e10..aebfeb51dd 100644 --- a/src/audio_core/stream.h +++ b/src/audio_core/stream.h @@ -33,6 +33,12 @@ public: Multi51Channel16, }; + /// Current state of the stream + enum class State { + Stopped, + Playing, + }; + /// Callback function type, used to change guest state on a buffer being released using ReleaseCallback = std::function; @@ -73,15 +79,9 @@ public: u32 GetNumChannels() const; /// Get the state - u32 GetState() const; + State GetState() const; private: - /// Current state of the stream - enum class State { - Stopped, - Playing, - }; - /// Plays the next queued buffer in the audio stream, starting playback if necessary void PlayNextBuffer(); diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp index 80ed4b152b..1258de5104 100644 --- a/src/core/hle/service/audio/audren_u.cpp +++ b/src/core/hle/service/audio/audren_u.cpp @@ -65,7 +65,7 @@ private: void GetAudioRendererState(Kernel::HLERequestContext& ctx) { IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); - rb.Push(renderer->GetState()); + rb.Push(static_cast(renderer->GetStreamState())); LOG_DEBUG(Service_Audio, "called"); }