From fab0132d1f531906d5177bc0304c5da379b7fea1 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 4 Sep 2018 09:36:57 -0700 Subject: Retain a shared thread pool reference Otherwise it may be prematurely deleted. --- platform/android/src/style/sources/geojson_source.cpp | 10 ++++++---- platform/android/src/style/sources/geojson_source.hpp | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/platform/android/src/style/sources/geojson_source.cpp b/platform/android/src/style/sources/geojson_source.cpp index e526231763..9d6ca704eb 100644 --- a/platform/android/src/style/sources/geojson_source.cpp +++ b/platform/android/src/style/sources/geojson_source.cpp @@ -45,15 +45,17 @@ namespace android { GeoJSONSource::GeoJSONSource(jni::JNIEnv& env, jni::String sourceId, jni::Object<> options) : Source(env, std::make_unique( jni::Make(env, sourceId), - convertGeoJSONOptions(env, options)) - ), converter(std::make_unique>(*sharedThreadPool())) { + convertGeoJSONOptions(env, options))) + , threadPool(sharedThreadPool()) + , converter(std::make_unique>(*threadPool)) { } GeoJSONSource::GeoJSONSource(jni::JNIEnv& env, mbgl::style::Source& coreSource, AndroidRendererFrontend& frontend) - : Source(env, coreSource, createJavaPeer(env), frontend) - , converter(std::make_unique>(*sharedThreadPool())) { + : Source(env, coreSource, createJavaPeer(env), frontend) + , threadPool(sharedThreadPool()) + , converter(std::make_unique>(*threadPool)) { } GeoJSONSource::~GeoJSONSource() = default; diff --git a/platform/android/src/style/sources/geojson_source.hpp b/platform/android/src/style/sources/geojson_source.hpp index b9c360c67c..24ea3c73f8 100644 --- a/platform/android/src/style/sources/geojson_source.hpp +++ b/platform/android/src/style/sources/geojson_source.hpp @@ -62,6 +62,7 @@ private: jni::Object createJavaPeer(jni::JNIEnv&); std::unique_ptr awaitingUpdate; std::unique_ptr update; + std::shared_ptr threadPool; std::unique_ptr> converter; template -- cgit v1.2.1