summaryrefslogtreecommitdiff
path: root/platform/android/src/thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/thread.cpp')
-rw-r--r--platform/android/src/thread.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/platform/android/src/thread.cpp b/platform/android/src/thread.cpp
index 721c63a531..cd0a72306e 100644
--- a/platform/android/src/thread.cpp
+++ b/platform/android/src/thread.cpp
@@ -5,11 +5,17 @@
#include <sys/prctl.h>
#include <sys/resource.h>
+#include <cassert>
+#include "jni.hpp"
+
// Implementation based on Chromium's platform_thread_android.cc.
namespace mbgl {
namespace platform {
+thread_local static JNIEnv* env;
+thread_local static bool detach;
+
std::string getCurrentThreadName() {
char name[32] = "unknown";
@@ -35,9 +41,15 @@ void makeThreadLowPriority() {
}
void attachThread() {
+ using namespace android;
+ assert(env == nullptr);
+ detach = attach_jni_thread(theJVM, &env, platform::getCurrentThreadName());
}
void detachThread() {
+ using namespace android;
+ assert(env);
+ detach_jni_thread(theJVM, &env, detach);
}
} // namespace platform