Merge pull request #332 from AngelAuraMC/feat/export-javavm-pointer

qol for modders
This commit is contained in:
tomikun authored and GitHub committed 2026-08-03 14:10:19 +08:00
commit 49fc5c53ad
3 files changed
+32

No files matched your search

@@ -1943,4 +1943,6 @@ public final class Tools {
*/
public static native void initializeControllerSubsystems();
}
public static native String jObjectToString(Object object);
public static native long getJavaVMPointer();
}
@@ -267,6 +267,9 @@ public class JREUtils {
envMap.put("POJAV_LOAD_TURNIP", "1");
}
envMap.put("DALVIK_APPLICATION", Tools.jObjectToString(activity.getApplication()));
envMap.put("DALVIK_JAVAVM", String.valueOf(Tools.getJavaVMPointer()));
readCustomEnv(envMap); // Must be last so it overrides anything the user sets for obvious reasons.
for (Map.Entry<String, String> env : envMap.entrySet()) {
+27
View File
@@ -200,3 +200,30 @@ JNIEXPORT jint JNICALL Java_net_kdt_pojavlaunch_utils_JREUtils_executeForkedBina
}
*/
// WARNING: This does not release the global ref, this can be a memory leak
JNIEXPORT jstring JNICALL
Java_net_kdt_pojavlaunch_Tools_jObjectToString(JNIEnv *env, jclass clazz, jobject object) {
if (object == NULL) {
return NULL;
}
jobject globalRef = (*env)->NewGlobalRef(env, object);
if (globalRef == NULL) {
return NULL;
}
char buf[32];
snprintf(buf, sizeof(buf), "%p", globalRef);
return (*env)->NewStringUTF(env, buf);
}
JNIEXPORT jlong JNICALL
Java_net_kdt_pojavlaunch_Tools_getJavaVMPointer(JNIEnv *env, jclass clazz) {
JavaVM *vm;
if ((*env)->GetJavaVM(env, &vm) != JNI_OK) {
return -1;
}
return (jlong)(uintptr_t)vm;
}