diff --git a/webrtc-jni/src/main/cpp/dependencies/jni-voithos/include/JavaThreadEnv.h b/webrtc-jni/src/main/cpp/dependencies/jni-voithos/include/JavaThreadEnv.h index 9fcf7f68..009d0ed9 100644 --- a/webrtc-jni/src/main/cpp/dependencies/jni-voithos/include/JavaThreadEnv.h +++ b/webrtc-jni/src/main/cpp/dependencies/jni-voithos/include/JavaThreadEnv.h @@ -23,6 +23,7 @@ namespace jni private: JavaVM * vm; JNIEnv * env; + bool attached; }; } diff --git a/webrtc-jni/src/main/cpp/dependencies/jni-voithos/src/JavaThreadEnv.cpp b/webrtc-jni/src/main/cpp/dependencies/jni-voithos/src/JavaThreadEnv.cpp index ee197b00..de544be6 100644 --- a/webrtc-jni/src/main/cpp/dependencies/jni-voithos/src/JavaThreadEnv.cpp +++ b/webrtc-jni/src/main/cpp/dependencies/jni-voithos/src/JavaThreadEnv.cpp @@ -7,33 +7,30 @@ #include "JavaThreadEnv.h" -#include -#include - namespace jni { JavaThreadEnv::JavaThreadEnv(JavaVM * vm) : vm(vm), - env(nullptr) + env(nullptr), + attached(false) { int status = vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6); if (status == JNI_EDETACHED) { - if (vm->AttachCurrentThread(reinterpret_cast(&env), NULL) != 0) { - std::cout << "VM attach current thread failed" << std::endl; + if (vm->AttachCurrentThread(reinterpret_cast(&env), NULL) == JNI_OK) { + attached = true; + } + else { + env = nullptr; } - } - - if (env == nullptr) { - std::cout << "Failed to attach thread " << std::this_thread::get_id() << std::endl; } } JavaThreadEnv::~JavaThreadEnv() { - vm->DetachCurrentThread(); - - //std::cout << "Dettached thread " << std::this_thread::get_id() << std::endl; + if (attached) { + vm->DetachCurrentThread(); + } } JNIEnv * JavaThreadEnv::getEnv() const diff --git a/webrtc-jni/src/main/cpp/src/rtc/LogSink.cpp b/webrtc-jni/src/main/cpp/src/rtc/LogSink.cpp index f5b8ce35..16a5c088 100644 --- a/webrtc-jni/src/main/cpp/src/rtc/LogSink.cpp +++ b/webrtc-jni/src/main/cpp/src/rtc/LogSink.cpp @@ -35,6 +35,10 @@ namespace jni { JNIEnv * env = AttachCurrentThread(); + if (env == nullptr) { + return; + } + JavaLocalRef jSeverity = JavaEnums::toJava(env, severity); JavaLocalRef jMessage = JavaString::toJava(env, message);