From 2ae408f5dd7d417d38424bef787fd5060080d609 Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Sun, 30 Jul 2023 12:06:55 +0100 Subject: [PATCH] Fix: stack queue check Now explicitly check the caller class --- JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java | 3 ++- Natives/MinecraftResourceUtils.m | 2 -- Natives/egl_bridge.m | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java b/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java index 82c75d72..06b61223 100644 --- a/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java @@ -783,7 +783,8 @@ public class GLFW if (!isGLFWReady) { mGLFWInitialTime = (double) System.nanoTime(); long __functionAddress = Functions.Init; - isGLFWReady = invokeI(__functionAddress) != 0; + boolean isCalledFromLWJGLX = new Throwable().getStackTrace()[1].getClassName().equals("org.lwjgl.Sys"); + isGLFWReady = invokeI(!isCalledFromLWJGLX, __functionAddress) != 0; } return isGLFWReady; } diff --git a/Natives/MinecraftResourceUtils.m b/Natives/MinecraftResourceUtils.m index b842740f..017c6575 100644 --- a/Natives/MinecraftResourceUtils.m +++ b/Natives/MinecraftResourceUtils.m @@ -302,8 +302,6 @@ static AFURLSessionManager* manager; library[@"downloads"][@"artifact"][@"path"] = @"net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar"; library[@"downloads"][@"artifact"][@"url"] = @"https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar"; library[@"downloads"][@"artifact"][@"sha1"] = @"1200e7ebeedbe0d10062093f32925a912020e747"; - } else if ([library[@"name"] hasPrefix:@"org.lwjgl:lwjgl:"]) { - isUseStackQueueCall = [library[@"name"] hasPrefix:@"org.lwjgl:lwjgl:3"]; } } diff --git a/Natives/egl_bridge.m b/Natives/egl_bridge.m index e159eda1..5e7a62e4 100644 --- a/Natives/egl_bridge.m +++ b/Natives/egl_bridge.m @@ -209,8 +209,9 @@ void loadSymbolsVirGL() { vtest_swap_buffers_p = dlsym(handle, "vtest_swap_buffers"); } -int pojavInit() { +int pojavInit(BOOL useStackQueue) { isInputReady = 1; + isUseStackQueueCall = useStackQueue; mainThreadID = gettid(); return JNI_TRUE; }