summaryrefslogtreecommitdiff
path: root/src/audio_core
diff options
context:
space:
mode:
authorGravatar bunnei2019-11-26 21:48:56 -0500
committerGravatar GitHub2019-11-26 21:48:56 -0500
commitec0ce96c568b2b610c5218efd7faa5d9a19350f8 (patch)
tree61b5133e3cc6a9edf3b45c5fe6604493689f6769 /src/audio_core
parentMerge pull request #3164 from ReinUsesLisp/half-cast-float (diff)
downloadyuzu-ec0ce96c568b2b610c5218efd7faa5d9a19350f8.tar.gz
yuzu-ec0ce96c568b2b610c5218efd7faa5d9a19350f8.tar.xz
yuzu-ec0ce96c568b2b610c5218efd7faa5d9a19350f8.zip
core_timing: Use better reference tracking for EventType. (#3159)
* core_timing: Use better reference tracking for EventType. - Moves ownership of the event to the caller, ensuring we don't fire events for destroyed objects. - Removes need for unique names - we won't be using this for save states anyways.
Diffstat (limited to 'src/audio_core')
-rw-r--r--src/audio_core/stream.cpp2
-rw-r--r--src/audio_core/stream.h25
2 files changed, 14 insertions, 13 deletions
diff --git a/src/audio_core/stream.cpp b/src/audio_core/stream.cpp
index 6a5f53a57..4ca98f8ea 100644
--- a/src/audio_core/stream.cpp
+++ b/src/audio_core/stream.cpp
@@ -37,7 +37,7 @@ Stream::Stream(Core::Timing::CoreTiming& core_timing, u32 sample_rate, Format fo
37 : sample_rate{sample_rate}, format{format}, release_callback{std::move(release_callback)}, 37 : sample_rate{sample_rate}, format{format}, release_callback{std::move(release_callback)},
38 sink_stream{sink_stream}, core_timing{core_timing}, name{std::move(name_)} { 38 sink_stream{sink_stream}, core_timing{core_timing}, name{std::move(name_)} {
39 39
40 release_event = core_timing.RegisterEvent( 40 release_event = Core::Timing::CreateEvent(
41 name, [this](u64 userdata, s64 cycles_late) { ReleaseActiveBuffer(); }); 41 name, [this](u64 userdata, s64 cycles_late) { ReleaseActiveBuffer(); });
42} 42}
43 43
diff --git a/src/audio_core/stream.h b/src/audio_core/stream.h
index 8106cea43..1708a4d98 100644
--- a/src/audio_core/stream.h
+++ b/src/audio_core/stream.h
@@ -98,18 +98,19 @@ private:
98 /// Gets the number of core cycles when the specified buffer will be released 98 /// Gets the number of core cycles when the specified buffer will be released
99 s64 GetBufferReleaseCycles(const Buffer& buffer) const; 99 s64 GetBufferReleaseCycles(const Buffer& buffer) const;
100 100
101 u32 sample_rate; ///< Sample rate of the stream 101 u32 sample_rate; ///< Sample rate of the stream
102 Format format; ///< Format of the stream 102 Format format; ///< Format of the stream
103 float game_volume = 1.0f; ///< The volume the game currently has set 103 float game_volume = 1.0f; ///< The volume the game currently has set
104 ReleaseCallback release_callback; ///< Buffer release callback for the stream 104 ReleaseCallback release_callback; ///< Buffer release callback for the stream
105 State state{State::Stopped}; ///< Playback state of the stream 105 State state{State::Stopped}; ///< Playback state of the stream
106 Core::Timing::EventType* release_event{}; ///< Core timing release event for the stream 106 std::shared_ptr<Core::Timing::EventType>
107 BufferPtr active_buffer; ///< Actively playing buffer in the stream 107 release_event; ///< Core timing release event for the stream
108 std::queue<BufferPtr> queued_buffers; ///< Buffers queued to be played in the stream 108 BufferPtr active_buffer; ///< Actively playing buffer in the stream
109 std::queue<BufferPtr> released_buffers; ///< Buffers recently released from the stream 109 std::queue<BufferPtr> queued_buffers; ///< Buffers queued to be played in the stream
110 SinkStream& sink_stream; ///< Output sink for the stream 110 std::queue<BufferPtr> released_buffers; ///< Buffers recently released from the stream
111 Core::Timing::CoreTiming& core_timing; ///< Core timing instance. 111 SinkStream& sink_stream; ///< Output sink for the stream
112 std::string name; ///< Name of the stream, must be unique 112 Core::Timing::CoreTiming& core_timing; ///< Core timing instance.
113 std::string name; ///< Name of the stream, must be unique
113}; 114};
114 115
115using StreamPtr = std::shared_ptr<Stream>; 116using StreamPtr = std::shared_ptr<Stream>;