Merge pull request #10221 from Kelebek1/partial_dsp_revert
Add a 5ms tiemout to the DSP processing wait
This commit is contained in:
		| @@ -154,6 +154,11 @@ void AudioRenderer::ThreadFunc() { | ||||
|             return; | ||||
|  | ||||
|         case RenderMessage::AudioRenderer_Render: { | ||||
|             if (system.IsShuttingDown()) [[unlikely]] { | ||||
|                 std::this_thread::sleep_for(std::chrono::milliseconds(5)); | ||||
|                 mailbox->ADSPSendMessage(RenderMessage::AudioRenderer_RenderResponse); | ||||
|                 continue; | ||||
|             } | ||||
|             std::array<bool, MaxRendererSessions> buffers_reset{}; | ||||
|             std::array<u64, MaxRendererSessions> render_times_taken{}; | ||||
|             const auto start_time{system.CoreTiming().GetClockTicks()}; | ||||
|   | ||||
| @@ -27,7 +27,7 @@ bool SystemManager::InitializeUnsafe() { | ||||
|     if (!active) { | ||||
|         if (adsp.Start()) { | ||||
|             active = true; | ||||
|             thread = std::jthread([this](std::stop_token stop_token) { ThreadFunc(); }); | ||||
|             thread = std::jthread([this](std::stop_token stop_token) { ThreadFunc(stop_token); }); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -39,8 +39,7 @@ void SystemManager::Stop() { | ||||
|         return; | ||||
|     } | ||||
|     active = false; | ||||
|     update.store(true); | ||||
|     update.notify_all(); | ||||
|     thread.request_stop(); | ||||
|     thread.join(); | ||||
|     adsp.Stop(); | ||||
| } | ||||
| @@ -85,12 +84,12 @@ bool SystemManager::Remove(System& system_) { | ||||
|     return true; | ||||
| } | ||||
|  | ||||
| void SystemManager::ThreadFunc() { | ||||
| void SystemManager::ThreadFunc(std::stop_token stop_token) { | ||||
|     static constexpr char name[]{"AudioRenderSystemManager"}; | ||||
|     MicroProfileOnThreadCreate(name); | ||||
|     Common::SetCurrentThreadName(name); | ||||
|     Common::SetCurrentThreadPriority(Common::ThreadPriority::High); | ||||
|     while (active) { | ||||
|     while (active && !stop_token.stop_requested()) { | ||||
|         { | ||||
|             std::scoped_lock l{mutex1}; | ||||
|  | ||||
|   | ||||
| @@ -66,13 +66,7 @@ private: | ||||
|     /** | ||||
|      * Main thread responsible for command generation. | ||||
|      */ | ||||
|     void ThreadFunc(); | ||||
|  | ||||
|     enum class StreamState { | ||||
|         Filling, | ||||
|         Steady, | ||||
|         Draining, | ||||
|     }; | ||||
|     void ThreadFunc(std::stop_token stop_token); | ||||
|  | ||||
|     /// Core system | ||||
|     Core::System& core; | ||||
| @@ -90,8 +84,6 @@ private: | ||||
|     ADSP::ADSP& adsp; | ||||
|     /// AudioRenderer mailbox for communication | ||||
|     ADSP::AudioRenderer_Mailbox* mailbox{}; | ||||
|     /// Atomic for main thread to wait on | ||||
|     std::atomic<bool> update{}; | ||||
| }; | ||||
|  | ||||
| } // namespace AudioCore::AudioRenderer | ||||
|   | ||||
| @@ -271,8 +271,8 @@ u64 SinkStream::GetExpectedPlayedSampleCount() { | ||||
|  | ||||
| void SinkStream::WaitFreeSpace() { | ||||
|     std::unique_lock lk{release_mutex}; | ||||
|     release_cv.wait( | ||||
|         lk, [this]() { return queued_buffers < max_queue_size || system.IsShuttingDown(); }); | ||||
|     release_cv.wait_for(lk, std::chrono::milliseconds(5), | ||||
|                         [this]() { return queued_buffers < max_queue_size; }); | ||||
| } | ||||
|  | ||||
| } // namespace AudioCore::Sink | ||||
|   | ||||
		Reference in New Issue
	
	Block a user