summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2018-01-23 14:43:37 -0800
committerKonstantin Käfer <mail@kkaefer.com>2018-01-26 12:10:09 -0800
commitdee36ffdf539fcc6fe9a17a5b438208a380a5031 (patch)
treefac102957f7ee921eba941edd09f5467b8c194dd
parenta7813c6e6d38c94b843ff70dcbd4f1a9fc141803 (diff)
downloadqtlocation-mapboxgl-dee36ffdf539fcc6fe9a17a5b438208a380a5031.tar.gz
[core] change RunLoop processing to check queue on every iteration
-rw-r--r--include/mbgl/util/run_loop.hpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/include/mbgl/util/run_loop.hpp b/include/mbgl/util/run_loop.hpp
index ecb18c857b..7167652687 100644
--- a/include/mbgl/util/run_loop.hpp
+++ b/include/mbgl/util/run_loop.hpp
@@ -88,12 +88,13 @@ private:
void process() {
std::unique_lock<std::mutex> lock(mutex);
- Queue queue_;
- lock.unlock();
-
- while (!queue_.empty()) {
- (*(queue_.front()))();
- queue_.pop();
+ std::shared_ptr<WorkTask> task;
+ while (!queue.empty()) {
+ task = std::move(queue.front());
+ queue.pop();
+ lock.unlock();
+ (*task)();
+ lock.lock();
}
}