mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2026-07-30 18:26:11 -04:00
feat: Set env vars for JavaVM pointers
For use primarily by mods who want to control android runtime for some reason.
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user