summaryrefslogtreecommitdiff
path: root/Source/Android/jni/MainAndroid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Android/jni/MainAndroid.cpp')
-rw-r--r--Source/Android/jni/MainAndroid.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/Source/Android/jni/MainAndroid.cpp b/Source/Android/jni/MainAndroid.cpp
index 9ffa7d2b0d..bb148f6578 100644
--- a/Source/Android/jni/MainAndroid.cpp
+++ b/Source/Android/jni/MainAndroid.cpp
@@ -72,6 +72,22 @@ Common::Event s_update_main_frame_event;
bool s_have_wm_user_stop = false;
} // Anonymous namespace
+void UpdatePointer()
+{
+ // Update touch pointer
+ JNIEnv* env;
+ int get_env_status =
+ IDCache::GetJavaVM()->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6);
+
+ if (get_env_status == JNI_EDETACHED)
+ IDCache::GetJavaVM()->AttachCurrentThread(&env, nullptr);
+
+ env->CallStaticVoidMethod(IDCache::GetNativeLibraryClass(), IDCache::GetUpdateTouchPointer());
+
+ if (get_env_status == JNI_EDETACHED)
+ IDCache::GetJavaVM()->DetachCurrentThread();
+}
+
void Host_NotifyMapLoaded()
{
}
@@ -108,11 +124,8 @@ void Host_UpdateMainFrame()
void Host_RequestRenderWindowSize(int width, int height)
{
- // Update touch pointer
- JNIEnv* env;
- IDCache::GetJavaVM()->AttachCurrentThread(&env, nullptr);
- env->CallStaticVoidMethod(IDCache::GetNativeLibraryClass(), IDCache::GetUpdateTouchPointer());
- IDCache::GetJavaVM()->DetachCurrentThread();
+ std::thread jnicall(UpdatePointer);
+ jnicall.join();
}
bool Host_UINeedsControllerState()