From 9affbfe683ac568d89a00bf6eb20af588ccd1b03 Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Sun, 29 Jan 2023 16:16:29 +0100 Subject: [PATCH] WorkQueueThread: Implement proper Flush and rename the existing Flush to FlushOne. --- Source/Core/Common/WorkQueueThread.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Source/Core/Common/WorkQueueThread.h b/Source/Core/Common/WorkQueueThread.h index 7d3d9395fb..2a756f3d7e 100644 --- a/Source/Core/Common/WorkQueueThread.h +++ b/Source/Core/Common/WorkQueueThread.h @@ -91,7 +91,7 @@ public: } // Doesn't return until the most recent function invocation has finished. - void Flush() + void FlushOne() { if (m_thread.joinable()) { @@ -101,6 +101,17 @@ public: } } + // Doesn't return until the queue is empty. + void Flush() + { + if (m_thread.joinable()) + { + m_flush.Set(); + m_wakeup.Set(); + m_flushed.Wait(); + } + } + bool IsFlushing() const { return m_flush.IsSet() || m_shutdown.IsSet(); } private: