From 0dec8feadb1c6ecca2de3764ccd413a8d950c573 Mon Sep 17 00:00:00 2001 From: weihuoya Date: Wed, 29 May 2019 20:22:26 +0800 Subject: android: thread local env --- .../InputCommon/ControllerInterface/Android/Android.cpp | 4 +--- Source/Core/InputCommon/GCAdapter_Android.cpp | 17 ++++------------- 2 files changed, 5 insertions(+), 16 deletions(-) (limited to 'Source/Core/InputCommon') diff --git a/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp b/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp index 0ff62ab48d..9ab4cbf0f8 100644 --- a/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp +++ b/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp @@ -237,10 +237,8 @@ void Touchscreen::Motor::SetState(ControlState state) void Touchscreen::Motor::Rumble(int padID, double state) { - JNIEnv* env; - IDCache::GetJavaVM()->AttachCurrentThread(&env, nullptr); + JNIEnv* env = IDCache::GetEnvForThread(); env->CallStaticVoidMethod(IDCache::GetNativeLibraryClass(), IDCache::GetDoRumble(), padID, state); - IDCache::GetJavaVM()->DetachCurrentThread(); } } // namespace Android } // namespace ciface diff --git a/Source/Core/InputCommon/GCAdapter_Android.cpp b/Source/Core/InputCommon/GCAdapter_Android.cpp index 9c6092dc78..1538f6749d 100644 --- a/Source/Core/InputCommon/GCAdapter_Android.cpp +++ b/Source/Core/InputCommon/GCAdapter_Android.cpp @@ -65,8 +65,7 @@ static void ScanThreadFunc() Common::SetCurrentThreadName("GC Adapter Scanning Thread"); NOTICE_LOG(SERIALINTERFACE, "GC Adapter scanning thread started"); - JNIEnv* env; - IDCache::GetJavaVM()->AttachCurrentThread(&env, NULL); + JNIEnv* env = IDCache::GetEnvForThread(); jmethodID queryadapter_func = env->GetStaticMethodID(s_adapter_class, "QueryAdapter", "()Z"); @@ -77,7 +76,6 @@ static void ScanThreadFunc() Setup(); Common::SleepCurrentThread(1000); } - IDCache::GetJavaVM()->DetachCurrentThread(); NOTICE_LOG(SERIALINTERFACE, "GC Adapter scanning thread stopped"); } @@ -87,8 +85,7 @@ static void Write() Common::SetCurrentThreadName("GC Adapter Write Thread"); NOTICE_LOG(SERIALINTERFACE, "GC Adapter write thread started"); - JNIEnv* env; - IDCache::GetJavaVM()->AttachCurrentThread(&env, NULL); + JNIEnv* env = IDCache::GetEnvForThread(); jmethodID output_func = env->GetStaticMethodID(s_adapter_class, "Output", "([B)I"); while (s_write_adapter_thread_running.IsSet()) @@ -118,8 +115,6 @@ static void Write() Common::YieldCPU(); } - IDCache::GetJavaVM()->DetachCurrentThread(); - NOTICE_LOG(SERIALINTERFACE, "GC Adapter write thread stopped"); } @@ -129,8 +124,7 @@ static void Read() NOTICE_LOG(SERIALINTERFACE, "GC Adapter read thread started"); bool first_read = true; - JNIEnv* env; - IDCache::GetJavaVM()->AttachCurrentThread(&env, NULL); + JNIEnv* env = IDCache::GetEnvForThread(); jfieldID payload_field = env->GetStaticFieldID(s_adapter_class, "controller_payload", "[B"); jobject payload_object = env->GetStaticObjectField(s_adapter_class, payload_field); @@ -184,8 +178,6 @@ static void Read() s_fd = 0; s_detected = false; - IDCache::GetJavaVM()->DetachCurrentThread(); - NOTICE_LOG(SERIALINTERFACE, "GC Adapter read thread stopped"); } @@ -202,8 +194,7 @@ void Init() s_last_init = CoreTiming::GetTicks(); } - JNIEnv* env; - IDCache::GetJavaVM()->AttachCurrentThread(&env, NULL); + JNIEnv* env = IDCache::GetEnvForThread(); jclass adapter_class = env->FindClass("org/dolphinemu/dolphinemu/utils/Java_GCAdapter"); s_adapter_class = reinterpret_cast(env->NewGlobalRef(adapter_class)); -- cgit v1.2.3