From d606d25bea020b4af7a0cd4251b1f631a128792d Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Mon, 12 Oct 2020 16:39:46 +0700 Subject: [PATCH] Multiple changes - Disable ClassWrapper - Try get multiple GL contexts --- .../main/java/net/kdt/pojavlaunch/Tools.java | 5 +++-- app/src/main/jni/egl_bridge.c | 17 +++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/net/kdt/pojavlaunch/Tools.java b/app/src/main/java/net/kdt/pojavlaunch/Tools.java index e18a452de..0627bbbf2 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -105,14 +105,15 @@ public final class Tools getJavaArgs(ctx, javaArgList); javaArgList.add("-cp"); + /* if (versionInfo.mainClass.equals("net.minecraft.launchwrapper.Launch")) { // Also preload LWJGL3 to fix crash on send input events javaArgList.add(Tools.MAIN_PATH + "/lwjgl3/ClassWrapper.jar:" + getLWJGL3ClassPath()); javaArgList.add("ClassWrapper"); javaArgList.add(launchClassPath); - } else { + } else { */ javaArgList.add(getLWJGL3ClassPath() + ":" + launchClassPath); - } + // } javaArgList.add(versionInfo.mainClass); javaArgList.addAll(Arrays.asList(launchArgs)); diff --git a/app/src/main/jni/egl_bridge.c b/app/src/main/jni/egl_bridge.c index a7b177ade..d601658a6 100644 --- a/app/src/main/jni/egl_bridge.c +++ b/app/src/main/jni/egl_bridge.c @@ -30,6 +30,7 @@ struct PotatoBridge { */ }; struct PotatoBridge potatoBridge; +EGLConfig config; typedef jint RegalMakeCurrent_func(EGLContext context); @@ -58,11 +59,20 @@ void terminateEgl() { potatoBridge.eglSurface = EGL_NO_SURFACE; } +JNIEXPORT jlong JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglGetCurrentContext(JNIEnv* env, jclass clazz) { + return (jlong) (uintptr_t) potatoBridge.eglContext; +} + JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglInit(JNIEnv* env, jclass clazz) { return JNI_TRUE; } JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglMakeCurrent(JNIEnv* env, jclass clazz) { + static const EGLint ctx_attribs[] = { + EGL_CONTEXT_CLIENT_VERSION, 2, + EGL_NONE + }; + if (potatoBridge.eglContext != EGL_NO_CONTEXT) { potatoBridge.eglContextOld = potatoBridge.eglContext; potatoBridge.eglContext = eglCreateContext(potatoBridge.eglDisplay, config, potatoBridge.eglContextOld, ctx_attribs); @@ -93,12 +103,7 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglMakeCurrent(JNIEnv* EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, EGL_NONE }; - static const EGLint ctx_attribs[] = { - EGL_CONTEXT_CLIENT_VERSION, 2, - EGL_NONE - }; - - EGLConfig config; + EGLint num_configs; EGLint vid;