[android] Attach thread on the RunLoop

Needed because Looper could be used by Java and it would crash
complaining that we didn't detach otherwise.
This commit is contained in:
Thiago Marcos P. Santos
2016-03-10 14:03:04 -03:00
parent 74a1d3c164
commit 10b503eabf
2 changed files with 12 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
#include "run_loop_impl.hpp"
#include <mbgl/util/thread_context.hpp>
#include <mbgl/util/thread_local.hpp>
#include <android/looper.h>
@@ -74,6 +75,9 @@ RunLoop* RunLoop::Get() {
}
RunLoop::RunLoop(Type) : impl(std::make_unique<Impl>()) {
using namespace mbgl::android;
impl->detach = attach_jni_thread(theJVM, &impl->env, ThreadContext::getName());
impl->loop = ALooper_prepare(0);
assert(impl->loop);
@@ -86,6 +90,9 @@ RunLoop::~RunLoop() {
current.set(nullptr);
ALooper_release(impl->loop);
using namespace mbgl::android;
detach_jni_thread(theJVM, &impl->env, impl->detach);
}
LOOP_HANDLE RunLoop::getLoopHandle() {