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-02-06 18:49:06 +0100
commit93c4a23636841ad81eaf49fcfab28f25d0ec868b (patch)
tree4819441ab1a6903cfce35a65fa164c042b81b8b0
parent78f8fd88b434099a6bc16b19d59e20b851e168ef (diff)
downloadqtlocation-mapboxgl-93c4a23636841ad81eaf49fcfab28f25d0ec868b.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();
}
}