From ee39334bf31ed0687c750f37229cf6bea8919b4c Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh <40482367+khanhduytran0@users.noreply.github.com> Date: Wed, 7 Jul 2021 15:48:25 +0700 Subject: [PATCH] Workaround 1.14.2 crashing --- .../src/main/java/org/lwjgl/glfw/GLFW.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java index 5e75986ff..043162f88 100644 --- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java @@ -515,8 +515,8 @@ public class GLFW } // Minecraft triggers a glfwPollEvents() on splash screen, so update window size there. - CallbackBridge.receiveCallback(CallbackBridge.EVENT_TYPE_FRAMEBUFFER_SIZE, mGLFWWindowWidth, mGLFWWindowHeight, 0, 0); - CallbackBridge.receiveCallback(CallbackBridge.EVENT_TYPE_WINDOW_SIZE, mGLFWWindowWidth, mGLFWWindowHeight, 0, 0); + // CallbackBridge.receiveCallback(CallbackBridge.EVENT_TYPE_FRAMEBUFFER_SIZE, mGLFWWindowWidth, mGLFWWindowHeight, 0, 0); + // CallbackBridge.receiveCallback(CallbackBridge.EVENT_TYPE_WINDOW_SIZE, mGLFWWindowWidth, mGLFWWindowHeight, 0, 0); try { System.loadLibrary("pojavexec"); @@ -960,9 +960,9 @@ public class GLFW } public static void glfwMakeContextCurrent(long window) { - //Probably not the best idea to rely on program's internals to share the contexts + //Probably not the best idea to rely on program's internals to share the contexts... new Exception("Trace exception").printStackTrace(); - } + nativeEglMakeCurrent(window); System.out.println(Long.toString(nativeEglGetCurrentContext(),16)); } @@ -1128,12 +1128,17 @@ public class GLFW break; case CallbackBridge.EVENT_TYPE_FRAMEBUFFER_SIZE: case CallbackBridge.EVENT_TYPE_WINDOW_SIZE: - internalChangeMonitorSize(dataArr[1], dataArr[2]); - glfwSetWindowSize(ptr, mGLFWWindowWidth, mGLFWWindowHeight); - if (dataArr[0] == CallbackBridge.EVENT_TYPE_FRAMEBUFFER_SIZE && mGLFWFramebufferSizeCallback != null) { - mGLFWFramebufferSizeCallback.invoke(ptr, mGLFWWindowWidth, mGLFWWindowHeight); - } else if (dataArr[0] == CallbackBridge.EVENT_TYPE_WINDOW_SIZE && mGLFWWindowSizeCallback != null) { - mGLFWWindowSizeCallback.invoke(ptr, mGLFWWindowWidth, mGLFWWindowHeight); + try { + internalChangeMonitorSize(dataArr[1], dataArr[2]); + glfwSetWindowSize(ptr, mGLFWWindowWidth, mGLFWWindowHeight); + if (dataArr[0] == CallbackBridge.EVENT_TYPE_FRAMEBUFFER_SIZE && mGLFWFramebufferSizeCallback != null) { + mGLFWFramebufferSizeCallback.invoke(ptr, mGLFWWindowWidth, mGLFWWindowHeight); + } else if (dataArr[0] == CallbackBridge.EVENT_TYPE_WINDOW_SIZE && mGLFWWindowSizeCallback != null) { + mGLFWWindowSizeCallback.invoke(ptr, mGLFWWindowWidth, mGLFWWindowHeight); + } + } catch (Throwable th) { + // Some Minecraft versions cause a NPE when setting size, so we will have to ignore them to make game alive + th.printStackTrace(); } break; default: