From 3865ae1bc2856e7a4e72476bf912770c3f4c9a1c Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Mon, 23 Nov 2020 17:42:06 +0700 Subject: [PATCH] Try trigger callback on first eglSwapBuffers() --- .../net/kdt/pojavlaunch/customcontrols/ControlData.java | 2 +- app/src/main/jni/egl_bridge.c | 7 ++++++- app/src/main/jni/input_bridge_v3.c | 3 +++ app/src/main/jni/utils.h | 2 ++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlData.java b/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlData.java index 9eace22fb..298955a4b 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlData.java +++ b/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlData.java @@ -100,7 +100,7 @@ public class ControlData implements Cloneable } public ControlData(String name, int keycode, float x, float y, float width, float height) { - this(name, keycode, null, null, width, height); + this(name, keycode, Float.toString(x), Float.toString(y), width, height); } public ControlData(String name, int keycode, String dynamicX, String dynamicY) { diff --git a/app/src/main/jni/egl_bridge.c b/app/src/main/jni/egl_bridge.c index 17e5e1359..17d45e52c 100644 --- a/app/src/main/jni/egl_bridge.c +++ b/app/src/main/jni/egl_bridge.c @@ -190,8 +190,13 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL_nativeRegalMakeCurrent(JNIEnv *e RegalMakeCurrent(potatoBridge.eglContext); } +bool isSizeSet; JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglSwapBuffers(JNIEnv *env, jclass clazz) { - return eglSwapBuffers(potatoBridge.eglDisplay, potatoBridge.eglSurface); + if (!isSizeSet) { + isSizeSet = true; + Java_org_lwjgl_glfw_CallbackBridge_nativeSendScreenSize(NULL, NULL, savedWidth, savedHeight); + } + return eglSwapBuffers(potatoBridge.eglDisplay, potatoBridge.eglSurface); } JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglSwapInterval(JNIEnv *env, jclass clazz, jint interval) { diff --git a/app/src/main/jni/input_bridge_v3.c b/app/src/main/jni/input_bridge_v3.c index 74e5e39b4..98b497989 100644 --- a/app/src/main/jni/input_bridge_v3.c +++ b/app/src/main/jni/input_bridge_v3.c @@ -290,6 +290,9 @@ JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSendMouseButton( } JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSendScreenSize(JNIEnv* env, jclass clazz, jint width, jint height) { + savedWidth = width; + savedHeight = height; + if (isInputReady) { if (GLFW_invoke_FramebufferSize) { if (isUseStackQueueCall) { diff --git a/app/src/main/jni/utils.h b/app/src/main/jni/utils.h index 03a3aa322..dcebbeb66 100644 --- a/app/src/main/jni/utils.h +++ b/app/src/main/jni/utils.h @@ -15,6 +15,8 @@ long showingWindow; bool isInputReady, isCursorEntered, isPrepareGrabPos, isUseStackQueueCall; +int savedWidth, savedHeight; + jboolean attachThread(bool isAndroid, JNIEnv** secondJNIEnvPtr); char** convert_to_char_array(JNIEnv *env, jobjectArray jstringArray); jobjectArray convert_from_char_array(JNIEnv *env, char **charArray, int num_rows);