1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-02-03 09:44:01 -05:00

Fixed the synchronous messenger

This commit is contained in:
f4exb 2018-02-14 12:43:30 +01:00
parent e8537d6582
commit cbcb7b6370

View File

@ -33,16 +33,15 @@ int SyncMessenger::sendWait(Message& message, unsigned long msPollTime)
{ {
m_message = &message; m_message = &message;
m_mutex.lock(); m_mutex.lock();
m_complete.testAndSetAcquire(0, 1); m_complete.store(0);
emit messageSent(); emit messageSent();
while (!m_complete.testAndSetAcquire(0, 1)) while (!m_complete.load())
{ {
m_waitCondition.wait(&m_mutex, msPollTime); m_waitCondition.wait(&m_mutex, msPollTime);
} }
m_complete = 0;
int result = m_result; int result = m_result;
m_mutex.unlock(); m_mutex.unlock();
@ -52,7 +51,7 @@ int SyncMessenger::sendWait(Message& message, unsigned long msPollTime)
void SyncMessenger::done(int result) void SyncMessenger::done(int result)
{ {
m_result = result; m_result = result;
m_complete = 0; m_complete.store(1);
m_waitCondition.wakeAll(); m_waitCondition.wakeAll();
} }