From b1c0530aed2d03ff01003b2a53591734b02774e2 Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh Date: Thu, 4 Feb 2021 20:46:10 +0700 Subject: [PATCH 1/2] Try to get mouse works without trigger callback --- JavaApp/src/main/java/HelloWorld.java | 2 ++ JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java | 15 +++++---------- .../java/org/lwjgl/glfw/GLFWWindowProperties.java | 8 ++++++++ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/JavaApp/src/main/java/HelloWorld.java b/JavaApp/src/main/java/HelloWorld.java index 1019ada1..bfcfd4c9 100644 --- a/JavaApp/src/main/java/HelloWorld.java +++ b/JavaApp/src/main/java/HelloWorld.java @@ -73,6 +73,8 @@ public class HelloWorld { // Get the resolution of the primary monitor GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor()); + + System.out.println("Actual width=" + vidmode.width() + ", height=" + vidmode.height()); // Center the window glfwSetWindowPos( diff --git a/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java b/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java index 706f29cf..9a388dc2 100644 --- a/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java @@ -500,11 +500,6 @@ public class GLFW public static final byte[] keyDownBuffer = new byte[316]; public static long mainContext = 0; static { - - // 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); - try { System.loadLibrary("pojavexec"); } catch (UnsatisfiedLinkError e) { @@ -967,13 +962,13 @@ public class GLFW long ptr = nativeEglCreateContext(share); //nativeEglMakeCurrent(ptr); GLFWWindowProperties win = new GLFWWindowProperties(); - // win.width = width; - // win.height = height; - win.width = mGLFWWindowWidth; - win.height = mGLFWWindowHeight; + win.width = width; + win.height = height; win.title = title; + + System.out.println("GLFW: Created window " + title + ", " + win.toString()); mGLFWWindowMap.put(ptr, win); mainContext = ptr; @@ -1009,7 +1004,7 @@ public class GLFW } public static void glfwShowWindow(long window) { - System.out.println("GLFW: Showing window " + window + ", x=" + internalGetWindow(window).x + ", y=" + internalGetWindow(window).y); + System.out.println("GLFW: Showing window " + window + ", " + internalGetWindow(window).toString()); nglfwSetShowingWindow(window); } public static void glfwWindowHint(int hint, int value) {} diff --git a/JavaApp/src/main/java/org/lwjgl/glfw/GLFWWindowProperties.java b/JavaApp/src/main/java/org/lwjgl/glfw/GLFWWindowProperties.java index 0596bad1..06caecfb 100644 --- a/JavaApp/src/main/java/org/lwjgl/glfw/GLFWWindowProperties.java +++ b/JavaApp/src/main/java/org/lwjgl/glfw/GLFWWindowProperties.java @@ -10,4 +10,12 @@ public class GLFWWindowProperties { public boolean shouldClose, isInitialSizeCalled, isCursorEntered; public Map inputModes = new HashMap<>(); public Map windowAttribs = new HashMap<>(); + + @Override + public String toString() { + return "width=" + width + ", " + + "height=" + height + ", " + + "x=" + x + ", " + + "y=" + y + ", "; + } } From a3d4669e51c91c6dff608992db3b6ba8ff717f39 Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh Date: Fri, 5 Feb 2021 06:52:36 +0700 Subject: [PATCH 2/2] Try to initial resize to get mouse works... --- .../src/main/java/org/lwjgl/glfw/GLFW.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java b/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java index 9a388dc2..6683dcb6 100644 --- a/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java @@ -505,7 +505,11 @@ public class GLFW } catch (UnsatisfiedLinkError e) { e.printStackTrace(); } - + + // 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); + mGLFWErrorCallback = GLFWErrorCallback.createPrint(); mGLFWKeyCodes = new ArrayMap<>(); @@ -663,7 +667,11 @@ public class GLFW } public static GLFWFramebufferSizeCallback glfwSetFramebufferSizeCallback(@NativeType("GLFWwindow *") long window, @Nullable @NativeType("GLFWframebuffersizefun") GLFWFramebufferSizeCallbackI cbfun) { - return mGLFWFramebufferSizeCallback = GLFWFramebufferSizeCallback.createSafe(nglfwSetFramebufferSizeCallback(window, memAddressSafe(cbfun))); + mGLFWFramebufferSizeCallback = GLFWFramebufferSizeCallback.createSafe(nglfwSetFramebufferSizeCallback(window, memAddressSafe(cbfun))); + + mGLFWFramebufferSizeCallback.invoke(window, mGLFWWindowWidth, mGLFWWindowHeight); + + return mGLFWFramebufferSizeCallback; } public static GLFWJoystickCallback glfwSetJoystickCallback(/* @NativeType("GLFWwindow *") long window, */ @Nullable @NativeType("GLFWjoystickfun") GLFWJoystickCallbackI cbfun) { @@ -746,7 +754,11 @@ public class GLFW } public static GLFWWindowSizeCallback glfwSetWindowSizeCallback(@NativeType("GLFWwindow *") long window, @Nullable @NativeType("GLFWwindowsizefun") GLFWWindowSizeCallbackI cbfun) { - return mGLFWWindowSizeCallback = GLFWWindowSizeCallback.createSafe(nglfwSetWindowSizeCallback(window, memAddressSafe(cbfun))); + mGLFWWindowSizeCallback = GLFWWindowSizeCallback.createSafe(nglfwSetWindowSizeCallback(window, memAddressSafe(cbfun))); + + mGLFWWindowSizeCallback.invoke(window, mGLFWWindowWidth, mGLFWWindowHeight); + + return mGLFWWindowSizeCallback; } static boolean isGLFWReady; public static boolean glfwInit() { @@ -963,12 +975,13 @@ public class GLFW //nativeEglMakeCurrent(ptr); GLFWWindowProperties win = new GLFWWindowProperties(); - win.width = width; - win.height = height; + // win.width = width; + // win.height = height; + + win.width = mGLFWWindowWidth; + win.height = mGLFWWindowHeight; win.title = title; - - System.out.println("GLFW: Created window " + title + ", " + win.toString()); mGLFWWindowMap.put(ptr, win); mainContext = ptr;