From 1c63f98f6df6a8b1a5db2cfb9e0d0bedba931b07 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 18 Nov 2015 17:40:26 -0800 Subject: [core] Expose fewer RunLoop implementation details in header --- include/mbgl/util/run_loop.hpp | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) (limited to 'include/mbgl/util/run_loop.hpp') diff --git a/include/mbgl/util/run_loop.hpp b/include/mbgl/util/run_loop.hpp index 8a2855e94b..122f90c3d7 100644 --- a/include/mbgl/util/run_loop.hpp +++ b/include/mbgl/util/run_loop.hpp @@ -1,11 +1,9 @@ #ifndef MBGL_UTIL_RUN_LOOP #define MBGL_UTIL_RUN_LOOP -#include #include #include #include -#include #include #include @@ -28,10 +26,7 @@ public: RunLoop(Type type = Type::Default); ~RunLoop(); - static RunLoop* Get() { - return current.get(); - } - + static RunLoop* Get(); static LOOP_HANDLE getLoopHandle(); void run(); @@ -46,8 +41,7 @@ public: std::move(fn), std::move(tuple)); - withMutex([&] { queue.push(task); }); - async->send(); + push(task); } // Post the cancellable work fn(args...) to this RunLoop. @@ -63,8 +57,7 @@ public: std::move(tuple), flag); - withMutex([&] { queue.push(task); }); - async->send(); + push(task); return std::make_unique(task); } @@ -81,7 +74,7 @@ public: // because if the request was cancelled, then R might have been destroyed. L2 needs to check // the flag because the request may have been cancelled after L2 was invoked but before it // began executing. - auto after = [flag, current = RunLoop::current.get(), callback1 = std::move(callback)] (auto&&... results1) { + auto after = [flag, current = RunLoop::Get(), callback1 = std::move(callback)] (auto&&... results1) { if (!*flag) { current->invoke([flag, callback2 = std::move(callback1)] (auto&&... results2) { if (!*flag) { @@ -97,8 +90,7 @@ public: std::move(tuple), flag); - withMutex([&] { queue.push(task); }); - async->send(); + push(task); return std::make_unique(task); } @@ -149,6 +141,8 @@ private: using Queue = std::queue>; + void push(std::shared_ptr); + void withMutex(std::function&& fn) { std::lock_guard lock(mutex); fn(); @@ -166,12 +160,9 @@ private: Queue queue; std::mutex mutex; - std::unique_ptr async; class Impl; std::unique_ptr impl; - - static uv::tls current; }; } -- cgit v1.2.1