[Clipboard pipe] detach thread after copy/paste

This commit is contained in:
Duy Tran Khanh 2021-01-22 15:41:49 +07:00 committed by GitHub
parent 7fc1dc5327
commit 19c1f7c6e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -184,23 +184,24 @@ JNIEXPORT jstring JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeClipboard(JNI
#ifdef DEBUG #ifdef DEBUG
LOGD("Debug: Clipboard access is going on\n", isUseStackQueueCall); LOGD("Debug: Clipboard access is going on\n", isUseStackQueueCall);
#endif #endif
if (dalvikJNIEnvPtr_JRE == NULL) { JNIEnv *dalvikEnv;
attachThread(false, &dalvikJNIEnvPtr_JRE); (*dalvikJavaVMPtr)->AttachCurrentThread(dalvikJavaVMPtr, &dalvikEnv, NULL);
} assert(dalvikEnv != NULL);
assert(dalvikJNIEnvPtr_JRE != NULL);
LOGD("Clipboard: Obtaining class\n"); LOGD("Clipboard: Obtaining class\n");
jclass bridgeClazz = (*dalvikJNIEnvPtr_JRE)->FindClass(dalvikJNIEnvPtr_JRE, "org/lwjgl/glfw/CallbackBridge"); jclass bridgeClazz = (*dalvikEnv)->FindClass(dalvikEnv, "org/lwjgl/glfw/CallbackBridge");
assert(bridgeClazz != NULL); assert(bridgeClazz != NULL);
LOGD("Clipboard: Obtaining class\n"); LOGD("Clipboard: Obtaining class\n");
jmethodID bridgeMethod = (*dalvikJNIEnvPtr_JRE)->GetStaticMethodID(dalvikJNIEnvPtr_JRE, bridgeClazz, "accessAndroidClipboard", "(ILjava/lang/String;)Ljava/lang/String;"); jmethodID bridgeMethod = (* dalvikEnv)->GetStaticMethodID(dalvikEnv, bridgeClazz, "accessAndroidClipboard", "(ILjava/lang/String;)Ljava/lang/String;");
assert(bridgeMethod != NULL); assert(bridgeMethod != NULL);
LOGD("Clipboard: Converting string\n"); LOGD("Clipboard: Converting string\n");
jstring copyDst = convertStringJVM(env, dalvikJNIEnvPtr_JRE, copySrc); jstring copyDst = convertStringJVM(env, dalvikEnv, copySrc);
LOGD("Clipboard: Calling 2nd\n"); LOGD("Clipboard: Calling 2nd\n");
return convertStringJVM(dalvikJNIEnvPtr_JRE, env, (jstring) (*dalvikJNIEnvPtr_JRE)->CallStaticObjectMethod(dalvikJNIEnvPtr_JRE, bridgeClazz, bridgeMethod, action, copyDst)); jstring pasteDst = convertStringJVM(dalvikEnv, env, (jstring) (*dalvikEnv)->CallStaticObjectMethod(dalvikEnv, bridgeClazz, bridgeMethod, action, copyDst));
dalvikJavaVMPtr->DetachCurrentThread();
return pasteDst;
} }
JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSetInputReady(JNIEnv* env, jclass clazz, jboolean inputReady) { JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSetInputReady(JNIEnv* env, jclass clazz, jboolean inputReady) {