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: