#pragma once #include namespace mbgl { namespace android { class JNIEnvDeleter { private: jni::JavaVM* vm = nullptr; bool detach = false; public: JNIEnvDeleter() = default; JNIEnvDeleter(jni::JavaVM& v, bool d) : vm(&v), detach(d) {} void operator()(jni::JNIEnv* p) const { if (p && detach) { assert(vm); vm->DetachCurrentThread(); } } }; using UniqueEnv = std::unique_ptr; UniqueEnv AttachEnv(); } }