diff --git a/Source/MailBox.cpp b/Source/MailBox.cpp index d98dd7c80..b9c9498bc 100644 --- a/Source/MailBox.cpp +++ b/Source/MailBox.cpp @@ -7,7 +7,7 @@ bool CMailBox::IsPending() const void CMailBox::WaitForCall() { - std::unique_lock callLock(m_callMutex); + std::unique_lock callLock(m_callMutex); while(!IsPending()) { m_waitCondition.wait(callLock); @@ -16,7 +16,7 @@ void CMailBox::WaitForCall() void CMailBox::WaitForCall(unsigned int timeOut) { - std::unique_lock callLock(m_callMutex); + std::unique_lock callLock(m_callMutex); if(IsPending()) return; m_waitCondition.wait_for(callLock, std::chrono::milliseconds(timeOut)); } @@ -29,8 +29,8 @@ void CMailBox::FlushCalls() void CMailBox::SendCall(const FunctionType& function, bool waitForCompletion) { std::future future; + { - std::unique_lock callLock(m_callMutex); MESSAGE message; message.function = function; @@ -40,6 +40,7 @@ void CMailBox::SendCall(const FunctionType& function, bool waitForCompletion) future = message.promise->get_future(); } + std::lock_guard callLock(m_callMutex); m_calls.push_back(std::move(message)); } @@ -53,11 +54,11 @@ void CMailBox::SendCall(const FunctionType& function, bool waitForCompletion) void CMailBox::SendCall(FunctionType&& function) { - std::lock_guard callLock(m_callMutex); - { MESSAGE message; message.function = std::move(function); + + std::lock_guard callLock(m_callMutex); m_calls.push_back(std::move(message)); } @@ -68,7 +69,7 @@ void CMailBox::ReceiveCall() { MESSAGE message; { - std::lock_guard waitLock(m_callMutex); + std::lock_guard callLock(m_callMutex); if(!IsPending()) return; message = std::move(m_calls.front()); m_calls.pop_front();