From 056ba55f1c7c60ee705bd4f52c4f9bf75f1936d7 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 10 Oct 2024 20:43:04 +0800 Subject: [PATCH] use condition_variable for render thread requestFrame as well as tasks --- thermion_dart/native/src/ThermionDartRenderThreadApi.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp b/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp index 013af5ce..b5dd4550 100644 --- a/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp +++ b/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp @@ -55,9 +55,10 @@ public: { std::unique_lock lock(_mutex); this->_requestFrameRenderCallback = callback; + _cv.notify_one(); } - void iter() + void iter() { { std::unique_lock lock(_mutex); @@ -79,7 +80,7 @@ public: if (_accumulatedTime >= 1.0f) // Update FPS every second { _fps = _frameCount / _accumulatedTime; - std::cout << "FPS: " << _fps << std::endl; + // std::cout << "FPS: " << _fps << std::endl; _frameCount = 0; _accumulatedTime = 0.0f; } @@ -96,7 +97,7 @@ public: taskLock.lock(); } - _cv.wait_for(taskLock, std::chrono::microseconds(1000), [this] + _cv.wait_for(taskLock, std::chrono::microseconds(2000), [this] { return !_tasks.empty() || _stop; }); }