From e5fb44c35355531311224bfd7e66fa89e588462e Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Tue, 3 Nov 2020 13:37:09 +0700 Subject: [PATCH] try to fix crash --- .../net/kdt/pojavlaunch/MainActivity.java | 6 ++--- app/src/main/jni/input_bridge_v3.c | 22 ++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java index 855a78c21..7873c920c 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -30,7 +30,7 @@ public class MainActivity extends LoggableActivity implements OnTouchListener, O public static volatile ClipboardManager GLOBAL_CLIPBOARD; public static final String initText = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA "; - volatile public static boolean isPushPollCall; + volatile public static boolean isInputStackCall; private static int[] hotbarKeys = { LWJGLGLFWKeycode.GLFW_KEY_1, LWJGLGLFWKeycode.GLFW_KEY_2, LWJGLGLFWKeycode.GLFW_KEY_3, @@ -162,8 +162,8 @@ public class MainActivity extends LoggableActivity implements OnTouchListener, O setTitle("Minecraft " + mProfile.getVersion()); // Minecraft 1.13+ - isPushPollCall = mVersionInfo.arguments != null; - CallbackBridge.nativeAttachThreadToOther(true, isPushPollCall); + isInputStackCall = mVersionInfo.arguments != null; + CallbackBridge.nativeAttachThreadToOther(true, isInputStackCall); this.displayMetrics = Tools.getDisplayMetrics(this); CallbackBridge.windowWidth = displayMetrics.widthPixels / scaleFactor; diff --git a/app/src/main/jni/input_bridge_v3.c b/app/src/main/jni/input_bridge_v3.c index 944c62a3b..8d1797207 100644 --- a/app/src/main/jni/input_bridge_v3.c +++ b/app/src/main/jni/input_bridge_v3.c @@ -98,13 +98,15 @@ void getJavaInputBridge(jclass* clazz, jmethodID* method) { } void sendData(int type, int i1, int i2, int i3, int i4) { - (*runtimeJNIEnvPtr_ANDROID)->CallStaticVoidMethod( - runtimeJNIEnvPtr_ANDROID, - inputBridgeClass_ANDROID, - inputBridgeMethod_ANDROID, - type, - i1, i2, i3, i4 - ); + if (runtimeJNIEnvPtr_ANDROID != NULL) { + (*runtimeJNIEnvPtr_ANDROID)->CallStaticVoidMethod( + runtimeJNIEnvPtr_ANDROID, + inputBridgeClass_ANDROID, + inputBridgeMethod_ANDROID, + type, + i1, i2, i3, i4 + ); + } } JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeAttachThreadToOther(JNIEnv* env, jclass clazz, jboolean isAndroid, jboolean isUseStackQueue) { @@ -126,10 +128,10 @@ JNIEXPORT jstring JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeClipboard(JNI // TODO: if crash here, then convert jstring to jstring (diff JVM) jclass bridgeClazz = (*dalvikJNIEnvPtr_JRE)->FindClass(dalvikJNIEnvPtr_JRE, "org/lwjgl/glfw/CallbackBridge"); assert(bridgeClazz != NULL); - jmethodID method = (*dalvikJNIEnvPtr_JRE)->GetStaticMethodID(dalvikJNIEnvPtr_JRE, bridgeClazz, "accessAndroidClipboard", "(ILjava/lang/String;)Ljava/lang/String;"); - assert(method != NULL); + jmethodID bridgeMethod = (*dalvikJNIEnvPtr_JRE)->GetStaticMethodID(dalvikJNIEnvPtr_JRE, bridgeClazz, "accessAndroidClipboard", "(ILjava/lang/String;)Ljava/lang/String;"); + assert(bridgeMethod != NULL); - return (jstring) (*dalvikJNIEnvPtr_JRE)->CallStaticObjectMethod(dalvikJNIEnvPtr_JRE, bridgeClazz, action, copy); + return (jstring) (*dalvikJNIEnvPtr_JRE)->CallStaticObjectMethod(dalvikJNIEnvPtr_JRE, bridgeClazz, bridgeMethod, action, copy); } JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSetInputReady(JNIEnv* env, jclass clazz, jboolean inputReady) {