diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-07-25 18:35:38 +0300 |
---|---|---|
committer | Ivo van Dongen <ivovandongen@users.noreply.github.com> | 2017-08-09 12:08:21 +0300 |
commit | f4f4d13b70cfc26e44c7cbc679acbe9609ae2936 (patch) | |
tree | f8dcd4f78ddf2f5d3e0227add7cd6bc3603515dd /platform/darwin | |
parent | 2a8cc4b3e15037554fb357f882a67472adb4161e (diff) | |
download | qtlocation-mapboxgl-f4f4d13b70cfc26e44c7cbc679acbe9609ae2936.tar.gz |
[all] ensure runloop is the current scheduler
Diffstat (limited to 'platform/darwin')
-rw-r--r-- | platform/darwin/src/MGLOfflineStorage.mm | 3 | ||||
-rw-r--r-- | platform/darwin/src/run_loop.cpp | 20 |
2 files changed, 9 insertions, 14 deletions
diff --git a/platform/darwin/src/MGLOfflineStorage.mm b/platform/darwin/src/MGLOfflineStorage.mm index 2ddfa649e9..7085aa58e5 100644 --- a/platform/darwin/src/MGLOfflineStorage.mm +++ b/platform/darwin/src/MGLOfflineStorage.mm @@ -11,6 +11,7 @@ #import "NSValue+MGLAdditions.h" #include <mbgl/actor/actor.hpp> +#include <mbgl/actor/scheduler.hpp> #include <mbgl/storage/resource_transform.hpp> #include <mbgl/util/run_loop.hpp> #include <mbgl/util/string.hpp> @@ -81,7 +82,7 @@ NSString * const MGLOfflinePackMaximumCountUserInfoKey = MGLOfflinePackUserInfoK - (void)setDelegate:(id<MGLOfflineStorageDelegate>)newValue { _delegate = newValue; if ([self.delegate respondsToSelector:@selector(offlineStorage:URLForResourceOfKind:withURL:)]) { - _mbglResourceTransform = std::make_unique<mbgl::Actor<mbgl::ResourceTransform>>(*mbgl::util::RunLoop::Get(), [offlineStorage = self](auto kind_, const std::string&& url_) -> std::string { + _mbglResourceTransform = std::make_unique<mbgl::Actor<mbgl::ResourceTransform>>(*mbgl::Scheduler::GetCurrent(), [offlineStorage = self](auto kind_, const std::string&& url_) -> std::string { NSURL* url = [NSURL URLWithString:[[NSString alloc] initWithBytes:url_.data() length:url_.length() diff --git a/platform/darwin/src/run_loop.cpp b/platform/darwin/src/run_loop.cpp index bae8164ab6..2ba8f8415b 100644 --- a/platform/darwin/src/run_loop.cpp +++ b/platform/darwin/src/run_loop.cpp @@ -1,38 +1,32 @@ #include <mbgl/util/run_loop.hpp> #include <mbgl/util/async_task.hpp> -#include <mbgl/util/thread_local.hpp> +#include <mbgl/actor/scheduler.hpp> #include <CoreFoundation/CoreFoundation.h> namespace mbgl { namespace util { -// Use a static function to avoid the static initialization order fiasco. -static auto& current() { - static ThreadLocal<RunLoop> tl; - return tl; -}; - class RunLoop::Impl { public: std::unique_ptr<AsyncTask> async; }; RunLoop* RunLoop::Get() { - assert(current().get()); - return current().get(); + assert(static_cast<RunLoop*>(Scheduler::GetCurrent())); + return static_cast<RunLoop*>(Scheduler::GetCurrent()); } RunLoop::RunLoop(Type) : impl(std::make_unique<Impl>()) { - assert(!current().get()); - current().set(this); + assert(!Scheduler::GetCurrent()); + Scheduler::SetCurrent(this); impl->async = std::make_unique<AsyncTask>(std::bind(&RunLoop::process, this)); } RunLoop::~RunLoop() { - assert(current().get()); - current().set(nullptr); + assert(Scheduler::GetCurrent()); + Scheduler::SetCurrent(nullptr); } void RunLoop::push(std::shared_ptr<WorkTask> task) { |