From 49dd3eb35288e54f6fe9c808b1ba4679c3bd0dbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Paczos?= Date: Fri, 10 May 2019 17:01:52 +0200 Subject: [android] overwrite default ThreadLifecycle --- platform/android/core-files.json | 1 + .../android/src/android_thread_pool_provider.cpp | 24 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 platform/android/src/android_thread_pool_provider.cpp diff --git a/platform/android/core-files.json b/platform/android/core-files.json index ba56695bdd..e35c7b5ffd 100644 --- a/platform/android/core-files.json +++ b/platform/android/core-files.json @@ -85,6 +85,7 @@ "platform/android/src/thread.cpp", "platform/android/src/timer.cpp", "platform/android/src/unaccent.cpp", + "platform/android/src/android_thread_pool_provider.cpp", "platform/default/src/mbgl/gl/headless_backend.cpp", "platform/default/src/mbgl/gl/headless_frontend.cpp", "platform/default/src/mbgl/map/map_snapshotter.cpp", diff --git a/platform/android/src/android_thread_pool_provider.cpp b/platform/android/src/android_thread_pool_provider.cpp new file mode 100644 index 0000000000..a136bb9681 --- /dev/null +++ b/platform/android/src/android_thread_pool_provider.cpp @@ -0,0 +1,24 @@ +#include +#include +#include +#include "jni.hpp" + +namespace mbgl { +std::shared_ptr getThreadPool() { + ThreadLifecycle lifecycle = { + [] { + using namespace android; + JNIEnv* env = nullptr; + attach_jni_thread(theJVM, &env, platform::getCurrentThreadName()); + return env; + }, + [](ThreadLifecycle::ThreadData threadData_) { + using namespace android; + assert(threadData_); + auto* env = static_cast(threadData_); + detach_jni_thread(theJVM, &env, true); + } + }; + return std::make_shared(4, lifecycle); +} +} // namespace mbgl \ No newline at end of file -- cgit v1.2.1