diff --git a/base/fence_manager.cpp b/base/fence_manager.cpp index 606e3f9542..bae6a7884a 100644 --- a/base/fence_manager.cpp +++ b/base/fence_manager.cpp @@ -110,6 +110,9 @@ void FenceManager::cancel() { threads::MutexGuard g(m_mutex); + if (m_isCancelled) + return; + m_isCancelled = true; list > tempList; diff --git a/yg/packets_queue.cpp b/yg/packets_queue.cpp index 1dfb7af13b..9d43cafc63 100644 --- a/yg/packets_queue.cpp +++ b/yg/packets_queue.cpp @@ -93,6 +93,11 @@ namespace yg m_fenceManager.cancel(); } + void PacketsQueue::cancelFences() + { + m_fenceManager.cancel(); + } + void PacketsQueue::processPacket(Packet const & packet) { if (m_packets.IsCancelled()) diff --git a/yg/packets_queue.hpp b/yg/packets_queue.hpp index cc97e77ba7..d02fd3ab6f 100644 --- a/yg/packets_queue.hpp +++ b/yg/packets_queue.hpp @@ -88,6 +88,7 @@ namespace yg void processPacket(Packet const & packet); void cancel(); + void cancelFences(); bool empty() const; size_t size() const;