diff options
author | Thiago Marcos P. Santos <thiago@mapbox.com> | 2015-09-01 11:09:19 +0300 |
---|---|---|
committer | Thiago Marcos P. Santos <thiago@mapbox.com> | 2015-12-01 00:00:09 +0200 |
commit | d422c8cac4e436fb2fb1eeafbae5ed5d847e0b00 (patch) | |
tree | dd8efd2cd842820f3f13fddf40cc0039fb261363 /src/mbgl/util/thread.hpp | |
parent | 1d623322044c4650bb39c9224f596341a23f490f (diff) | |
download | qtlocation-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.hpp | 23 |
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); |