From 13eddef3126e18a9d0fd0654b2db5f24b7848fb8 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 25 Mar 2016 11:37:04 -0700 Subject: [PATCH] fix locking in GenericQueueThread::process --- libraries/shared/src/GenericQueueThread.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/shared/src/GenericQueueThread.h b/libraries/shared/src/GenericQueueThread.h index 067d7a7989..28fcdb0ed6 100644 --- a/libraries/shared/src/GenericQueueThread.h +++ b/libraries/shared/src/GenericQueueThread.h @@ -45,18 +45,23 @@ protected: } virtual bool process() { + lock(); if (!_items.size()) { + unlock(); _hasItemsMutex.lock(); _hasItems.wait(&_hasItemsMutex, getMaxWait()); _hasItemsMutex.unlock(); + } else { + unlock(); } + lock(); if (!_items.size()) { + unlock(); return isStillRunning(); } Queue processItems; - lock(); processItems.swap(_items); unlock(); return processQueueItems(processItems);