diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-10-06 16:10:09 +0200 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-10-06 10:16:45 -0700 |
commit | 08809b4d446940d31d777c787971ea6ae6b3fa1c (patch) | |
tree | a155f96340b8d1b421eb73cea6eeefcb009b629f | |
parent | 7bcb04a609415132db112b02507118835d519e36 (diff) | |
download | qtlocation-mapboxgl-08809b4d446940d31d777c787971ea6ae6b3fa1c.tar.gz |
[macos,ios] initialize util::RunLoop in SDK rather than by default
-rw-r--r-- | platform/darwin/src/run_loop.cpp | 2 | ||||
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 8 | ||||
-rw-r--r-- | platform/macos/src/MGLMapView.mm | 8 | ||||
-rw-r--r-- | test/tile/raster_tile.test.cpp | 2 | ||||
-rw-r--r-- | test/tile/vector_tile.test.cpp | 2 |
5 files changed, 21 insertions, 1 deletions
diff --git a/platform/darwin/src/run_loop.cpp b/platform/darwin/src/run_loop.cpp index 6e9a1c50b0..63bd8d2f53 100644 --- a/platform/darwin/src/run_loop.cpp +++ b/platform/darwin/src/run_loop.cpp @@ -8,7 +8,6 @@ namespace mbgl { namespace util { static ThreadLocal<RunLoop>& current = *new ThreadLocal<RunLoop>; -static RunLoop mainRunLoop; class RunLoop::Impl { public: @@ -22,6 +21,7 @@ RunLoop* RunLoop::Get() { RunLoop::RunLoop(Type) : impl(std::make_unique<Impl>()) { + assert(!current.get()); current.set(this); impl->async = std::make_unique<AsyncTask>(std::bind(&RunLoop::process, this)); } diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 9067efc033..fd3725ecd2 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -24,6 +24,7 @@ #include <mbgl/util/projection.hpp> #include <mbgl/util/default_styles.hpp> #include <mbgl/util/chrono.hpp> +#import <mbgl/util/run_loop.hpp> #import "Mapbox.h" #import "MGLFeature_Private.h" @@ -126,6 +127,11 @@ enum { MGLAnnotationTagNotFound = UINT32_MAX }; /// the annotation itself. typedef std::map<MGLAnnotationTag, MGLAnnotationContext> MGLAnnotationContextMap; +/// Initializes the run loop shim that lives on the main thread. +void MGLinitializeRunLoop() { + static mbgl::util::RunLoop mainRunLoop; +} + mbgl::util::UnitBezier MGLUnitBezierForMediaTimingFunction(CAMediaTimingFunction *function) { if ( ! function) @@ -357,6 +363,8 @@ public: - (void)commonInit { + MGLinitializeRunLoop(); + _isTargetingInterfaceBuilder = NSProcessInfo.processInfo.mgl_isInterfaceBuilderDesignablesAgent; _opaque = YES; diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 8fca7b86ff..d61b336c9f 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -30,6 +30,7 @@ #import <mbgl/math/wrap.hpp> #import <mbgl/util/constants.hpp> #import <mbgl/util/chrono.hpp> +#import <mbgl/util/run_loop.hpp> #import <unordered_map> #import <unordered_set> @@ -112,6 +113,11 @@ NSImage *MGLDefaultMarkerImage() { return [[NSImage alloc] initWithContentsOfFile:path]; } +/// Initializes the run loop shim that lives on the main thread. +void MGLinitializeRunLoop() { + static mbgl::util::RunLoop mainRunLoop; +} + /// Converts a media timing function into a unit bezier object usable in mbgl. mbgl::util::UnitBezier MGLUnitBezierForMediaTimingFunction(CAMediaTimingFunction *function) { if (!function) { @@ -234,6 +240,8 @@ public: } - (void)commonInit { + MGLinitializeRunLoop(); + _isTargetingInterfaceBuilder = NSProcessInfo.processInfo.mgl_isInterfaceBuilderDesignablesAgent; // Set up cross-platform controllers and resources. diff --git a/test/tile/raster_tile.test.cpp b/test/tile/raster_tile.test.cpp index a5a7e65b35..4e9e907321 100644 --- a/test/tile/raster_tile.test.cpp +++ b/test/tile/raster_tile.test.cpp @@ -4,6 +4,7 @@ #include <mbgl/tile/tile_loader_impl.hpp> #include <mbgl/actor/thread_pool.hpp> +#include <mbgl/util/run_loop.hpp> #include <mbgl/map/transform.hpp> #include <mbgl/style/style.hpp> #include <mbgl/style/update_parameters.hpp> @@ -15,6 +16,7 @@ class RasterTileTest { public: FakeFileSource fileSource; TransformState transformState; + util::RunLoop loop; ThreadPool threadPool { 1 }; AnnotationManager annotationManager { 1.0 }; style::Style style { fileSource, 1.0 }; diff --git a/test/tile/vector_tile.test.cpp b/test/tile/vector_tile.test.cpp index e22b88a61d..fa75e24480 100644 --- a/test/tile/vector_tile.test.cpp +++ b/test/tile/vector_tile.test.cpp @@ -4,6 +4,7 @@ #include <mbgl/tile/tile_loader_impl.hpp> #include <mbgl/actor/thread_pool.hpp> +#include <mbgl/util/run_loop.hpp> #include <mbgl/map/transform.hpp> #include <mbgl/style/style.hpp> #include <mbgl/style/update_parameters.hpp> @@ -15,6 +16,7 @@ class VectorTileTest { public: FakeFileSource fileSource; TransformState transformState; + util::RunLoop loop; ThreadPool threadPool { 1 }; AnnotationManager annotationManager { 1.0 }; style::Style style { fileSource, 1.0 }; |