diff options
| author | Connor McLaughlin <stenzek@gmail.com> | 2019-06-08 20:42:15 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-08 20:42:15 +1000 |
| commit | bed2d66bedca7e9537d67d3e7a5506aee8717c8f (patch) | |
| tree | 259ece7474e30a0a0cb70aa0c2ff3fc098640a24 /Source/Core/InputCommon | |
| parent | 5a4e2a6b2f8555c590501649ed061592949fb480 (diff) | |
| parent | 0dec8feadb1c6ecca2de3764ccd413a8d950c573 (diff) | |
Merge pull request #8117 from weihuoya/threaded_env
android: get java env from thread local storage
Diffstat (limited to 'Source/Core/InputCommon')
| -rw-r--r-- | Source/Core/InputCommon/ControllerInterface/Android/Android.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/InputCommon/GCAdapter_Android.cpp | 17 |
2 files changed, 5 insertions, 16 deletions
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 176b8b3192..90a83c20eb 100644 --- a/Source/Core/InputCommon/GCAdapter_Android.cpp +++ b/Source/Core/InputCommon/GCAdapter_Android.cpp @@ -66,8 +66,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"); @@ -78,7 +77,6 @@ static void ScanThreadFunc() Setup(); Common::SleepCurrentThread(1000); } - IDCache::GetJavaVM()->DetachCurrentThread(); NOTICE_LOG(SERIALINTERFACE, "GC Adapter scanning thread stopped"); } @@ -88,8 +86,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()) @@ -119,8 +116,6 @@ static void Write() Common::YieldCPU(); } - IDCache::GetJavaVM()->DetachCurrentThread(); - NOTICE_LOG(SERIALINTERFACE, "GC Adapter write thread stopped"); } @@ -130,8 +125,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); @@ -185,8 +179,6 @@ static void Read() s_fd = 0; s_detected = false; - IDCache::GetJavaVM()->DetachCurrentThread(); - NOTICE_LOG(SERIALINTERFACE, "GC Adapter read thread stopped"); } @@ -203,8 +195,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<jclass>(env->NewGlobalRef(adapter_class)); |
