From 40bbc0f4a13e2560c5aaaa62646c6d23f99a5d6d Mon Sep 17 00:00:00 2001 From: Anand Thakker Date: Thu, 14 Jun 2018 14:50:09 -0400 Subject: Take values rather than references in thread target object constructors --- .../android/src/snapshotter/map_snapshotter.cpp | 6 +++--- .../android/src/snapshotter/map_snapshotter.hpp | 3 ++- platform/darwin/src/MGLMapSnapshotter.mm | 5 +++-- platform/default/default_file_source.cpp | 2 +- platform/default/mbgl/map/map_snapshotter.cpp | 22 +++++++++++++--------- platform/default/mbgl/map/map_snapshotter.hpp | 4 ++-- 6 files changed, 24 insertions(+), 18 deletions(-) diff --git a/platform/android/src/snapshotter/map_snapshotter.cpp b/platform/android/src/snapshotter/map_snapshotter.cpp index 155fdf81fb..c5fd7e21d7 100644 --- a/platform/android/src/snapshotter/map_snapshotter.cpp +++ b/platform/android/src/snapshotter/map_snapshotter.cpp @@ -36,7 +36,7 @@ MapSnapshotter::MapSnapshotter(jni::JNIEnv& _env, } jFileSource = FileSource::getNativePeer(_env, _jFileSource); - auto& fileSource = mbgl::android::FileSource::getDefaultFileSource(_env, _jFileSource); + fileSource = std::shared_ptr(&mbgl::android::FileSource::getDefaultFileSource(_env, _jFileSource)); auto size = mbgl::Size { static_cast(width), static_cast(height) }; optional cameraOptions; @@ -59,7 +59,7 @@ MapSnapshotter::MapSnapshotter(jni::JNIEnv& _env, showLogo = _showLogo; // Create the core snapshotter snapshotter = std::make_unique(fileSource, - *threadPool, + threadPool, style, size, pixelRatio, @@ -173,4 +173,4 @@ void MapSnapshotter::registerNative(jni::JNIEnv& env) { } } // namespace android -} // namespace mbgl \ No newline at end of file +} // namespace mbgl diff --git a/platform/android/src/snapshotter/map_snapshotter.hpp b/platform/android/src/snapshotter/map_snapshotter.hpp index 3be2cb4f6c..47c7fd912a 100644 --- a/platform/android/src/snapshotter/map_snapshotter.hpp +++ b/platform/android/src/snapshotter/map_snapshotter.hpp @@ -70,10 +70,11 @@ private: std::unique_ptr snapshotter; FileSource *jFileSource; + std::shared_ptr fileSource; void activateFilesource(JNIEnv&); void deactivateFilesource(JNIEnv&); bool activatedFilesource = false; }; } // namespace android -} // namespace mbgl \ No newline at end of file +} // namespace mbgl diff --git a/platform/darwin/src/MGLMapSnapshotter.mm b/platform/darwin/src/MGLMapSnapshotter.mm index 2a2bef8fb8..1d52360d88 100644 --- a/platform/darwin/src/MGLMapSnapshotter.mm +++ b/platform/darwin/src/MGLMapSnapshotter.mm @@ -86,6 +86,7 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; @implementation MGLMapSnapshotter { std::shared_ptr _mbglThreadPool; + std::shared_ptr _mbglFileSource; std::unique_ptr _mbglMapSnapshotter; std::unique_ptr> _snapshotCallback; } @@ -438,7 +439,7 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; - (void)setOptions:(MGLMapSnapshotOptions *)options { _options = options; - mbgl::DefaultFileSource *mbglFileSource = [MGLOfflineStorage sharedOfflineStorage].mbglFileSource; + _mbglFileSource = std::shared_ptr([MGLOfflineStorage sharedOfflineStorage].mbglFileSource); _mbglThreadPool = mbgl::sharedThreadPool(); std::string styleURL = std::string([options.styleURL.absoluteString UTF8String]); @@ -469,7 +470,7 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; } // Create the snapshotter - _mbglMapSnapshotter = std::make_unique(*mbglFileSource, *_mbglThreadPool, style, size, pixelRatio, cameraOptions, coordinateBounds); + _mbglMapSnapshotter = std::make_unique(_mbglFileSource, _mbglThreadPool, style, size, pixelRatio, cameraOptions, coordinateBounds); } @end diff --git a/platform/default/default_file_source.cpp b/platform/default/default_file_source.cpp index cb602995a4..26b67134cb 100644 --- a/platform/default/default_file_source.cpp +++ b/platform/default/default_file_source.cpp @@ -18,7 +18,7 @@ namespace mbgl { class DefaultFileSource::Impl { public: - Impl(ActorRef self, std::shared_ptr assetFileSource_, const std::string& cachePath, uint64_t maximumCacheSize) + Impl(ActorRef self, std::shared_ptr assetFileSource_, std::string cachePath, uint64_t maximumCacheSize) : assetFileSource(assetFileSource_) , localFileSource(std::make_unique()) { // Initialize the Database asynchronously so as to not block Actor creation. diff --git a/platform/default/mbgl/map/map_snapshotter.cpp b/platform/default/mbgl/map/map_snapshotter.cpp index a909e3fe9b..d7703e15b2 100644 --- a/platform/default/mbgl/map/map_snapshotter.cpp +++ b/platform/default/mbgl/map/map_snapshotter.cpp @@ -13,8 +13,8 @@ namespace mbgl { class MapSnapshotter::Impl { public: - Impl(FileSource&, - Scheduler&, + Impl(std::shared_ptr, + std::shared_ptr, const std::pair style, const Size&, const float pixelRatio, @@ -40,20 +40,24 @@ public: void snapshot(ActorRef); private: + std::shared_ptr fileSource; + std::shared_ptr scheduler; HeadlessFrontend frontend; Map map; }; -MapSnapshotter::Impl::Impl(FileSource& fileSource, - Scheduler& scheduler, +MapSnapshotter::Impl::Impl(std::shared_ptr fileSource_, + std::shared_ptr scheduler_, const std::pair style, const Size& size, const float pixelRatio, const optional cameraOptions, const optional region, const optional programCacheDir) - : frontend(size, pixelRatio, fileSource, scheduler, programCacheDir) - , map(frontend, MapObserver::nullObserver(), size, pixelRatio, fileSource, scheduler, MapMode::Static) { + : fileSource(std::move(fileSource_)) + , scheduler(std::move(scheduler_)) + , frontend(size, pixelRatio, *fileSource, *scheduler, programCacheDir) + , map(frontend, MapObserver::nullObserver(), size, pixelRatio, *fileSource, *scheduler, MapMode::Static) { if (style.first) { map.getStyle().loadJSON(style.second); @@ -149,15 +153,15 @@ LatLngBounds MapSnapshotter::Impl::getRegion() const { return map.latLngBoundsForCamera(getCameraOptions()); } -MapSnapshotter::MapSnapshotter(FileSource& fileSource, - Scheduler& scheduler, +MapSnapshotter::MapSnapshotter(std::shared_ptr fileSource, + std::shared_ptr scheduler, const std::pair style, const Size& size, const float pixelRatio, const optional cameraOptions, const optional region, const optional programCacheDir) - : impl(std::make_unique>("Map Snapshotter", fileSource, scheduler, style, size, pixelRatio, cameraOptions, region, programCacheDir)) { + : impl(std::make_unique>("Map Snapshotter", std::move(fileSource), std::move(scheduler), style, size, pixelRatio, cameraOptions, region, programCacheDir)) { } MapSnapshotter::~MapSnapshotter() = default; diff --git a/platform/default/mbgl/map/map_snapshotter.hpp b/platform/default/mbgl/map/map_snapshotter.hpp index b9e6307664..dd90d54b26 100644 --- a/platform/default/mbgl/map/map_snapshotter.hpp +++ b/platform/default/mbgl/map/map_snapshotter.hpp @@ -25,8 +25,8 @@ class Style; class MapSnapshotter { public: - MapSnapshotter(FileSource& fileSource, - Scheduler& scheduler, + MapSnapshotter(std::shared_ptr fileSource, + std::shared_ptr scheduler, const std::pair style, const Size&, const float pixelRatio, -- cgit v1.2.1