diff --git a/app_pojavlauncher/src/main/jni/input_bridge_v3.c b/app_pojavlauncher/src/main/jni/input_bridge_v3.c index 409f72c03..f6805b98a 100644 --- a/app_pojavlauncher/src/main/jni/input_bridge_v3.c +++ b/app_pojavlauncher/src/main/jni/input_bridge_v3.c @@ -41,6 +41,15 @@ jint JNI_OnLoad(JavaVM* vm, __attribute__((unused)) void* reserved) { LOGI("Saving DVM environ..."); //Save dalvik global JavaVM pointer pojav_environ->dalvikJavaVMPtr = vm; + char buf[32] = "-1"; + int ret = snprintf(buf, sizeof(buf), "%p", pojav_environ->dalvikJavaVMPtr); + if (ret < 0 || ret >= sizeof(buf)) { + LOGE("Failed to set DALVIK_JAVAVM to pointer"); + setenv("DALVIK_JAVAVM", "-1", 1); + } else { + setenv("DALVIK_JAVAVM", buf, 1); + } + // Sets up the stuff that GLFW/JVM needs to communicate to Android // These methods are called from GLFW/JVM and connect to Android-side impls // These aren't separated out into a method because these can be ran so long as we are in Android-land @@ -57,6 +66,14 @@ jint JNI_OnLoad(JavaVM* vm, __attribute__((unused)) void* reserved) { } else if (pojav_environ->dalvikJavaVMPtr != vm) { LOGI("Saving JVM environ..."); pojav_environ->runtimeJavaVMPtr = vm; + char buf[32] = "-1"; + int ret = snprintf(buf, sizeof(buf), "%p", pojav_environ->runtimeJavaVMPtr); + if (ret < 0 || ret >= sizeof(buf)) { + LOGE("Failed to set OPENJDK_JAVAVM to pointer"); + setenv("OPENJDK_JAVAVM", "-1", 1); + } else { + setenv("OPENJDK_JAVAVM", buf, 1); + } JNIEnv *vmEnv; (*pojav_environ->runtimeJavaVMPtr)->GetEnv(pojav_environ->runtimeJavaVMPtr, (void**) &vmEnv, JNI_VERSION_1_4); hookExec(vmEnv);