summaryrefslogtreecommitdiff
path: root/src/mbgl/util/thread.hpp
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <thiago@mapbox.com>2015-09-01 11:09:19 +0300
committerThiago Marcos P. Santos <thiago@mapbox.com>2015-12-01 00:00:09 +0200
commitd422c8cac4e436fb2fb1eeafbae5ed5d847e0b00 (patch)
treedd8efd2cd842820f3f13fddf40cc0039fb261363 /src/mbgl/util/thread.hpp
parent1d623322044c4650bb39c9224f596341a23f490f (diff)
downloadqtlocation-mapboxgl-d422c8cac4e436fb2fb1eeafbae5ed5d847e0b00.tar.gz
[core] Abstract main loop inside RunLoop class
Diffstat (limited to 'src/mbgl/util/thread.hpp')
-rw-r--r--src/mbgl/util/thread.hpp23
1 files changed, 8 insertions, 15 deletions
diff --git a/src/mbgl/util/thread.hpp b/src/mbgl/util/thread.hpp
index d7611254cc..7924d3d4cf 100644
--- a/src/mbgl/util/thread.hpp
+++ b/src/mbgl/util/thread.hpp
@@ -112,26 +112,19 @@ Thread<Object>::Thread(const ThreadContext& context, Args&&... args) {
template <class Object>
template <typename P, std::size_t... I>
void Thread<Object>::run(ThreadContext context, P&& params, std::index_sequence<I...>) {
- uv::loop l;
-
ThreadContext::current.set(&context);
- {
- RunLoop loop_(l.get());
- loop = &loop_;
-
- Object object_(std::get<I>(std::forward<P>(params))...);
- object = &object_;
+ RunLoop loop_(RunLoop::Type::New);
+ loop = &loop_;
- running.set_value();
- l.run();
+ Object object_(std::get<I>(std::forward<P>(params))...);
+ object = &object_;
- loop = nullptr;
- object = nullptr;
- }
+ running.set_value();
+ loop_.run();
- // Run the loop again to ensure that async close callbacks have been called.
- l.run();
+ loop = nullptr;
+ object = nullptr;
ThreadContext::current.set(nullptr);