Skip to content
Permalink
Browse files

Android: Call update touch pointer from thread.

Fixes crash in single core when attaching the JVM
  • Loading branch information...
zackhow committed Jan 29, 2019
1 parent 4cd5667 commit 3cc10dcaf9468504e3ff8e9a091cb36a9937afc7
Showing with 18 additions and 5 deletions.
  1. +18 −5 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()

0 comments on commit 3cc10dc

Please sign in to comment.
You can’t perform that action at this time.