diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java index 27855fbee..ec7c0ac47 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java @@ -8,7 +8,6 @@ import android.view.*; import java.util.*; import net.kdt.pojavlaunch.utils.*; -import org.lwjgl.glfw.*; public class AWTCanvasView extends TextureView implements TextureView.SurfaceTextureListener, Runnable { public static final int AWT_CANVAS_WIDTH = 720; @@ -19,7 +18,6 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex private int mWidth, mHeight; private boolean mIsDestroyed = false; private final TextPaint mFpsPaint; - private boolean mAttached = false; private boolean mDrawing; // Temporary count fps https://stackoverflow.com/a/13729241 @@ -80,20 +78,14 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex canvas = surface.lockCanvas(null); canvas.drawRGB(0, 0, 0); - if (!mAttached) { - mAttached = CallbackBridge.nativeAttachThreadToOther(true, MainActivity.isInputStackCall); - } else { - int[] rgbArray = JREUtils.renderAWTScreenFrame(/* canvas, mWidth, mHeight */); - mDrawing = rgbArray != null; - if (rgbArray != null) { - - canvas.save(); - - canvas.drawBitmap(rgbArray, 0, AWT_CANVAS_WIDTH, 0, 0, AWT_CANVAS_WIDTH, AWT_CANVAS_HEIGHT, true, null); - canvas.restore(); - } + int[] rgbArray = JREUtils.renderAWTScreenFrame(/* canvas, mWidth, mHeight */); + mDrawing = rgbArray != null; + if (rgbArray != null) { + canvas.save(); + canvas.drawBitmap(rgbArray, 0, AWT_CANVAS_WIDTH, 0, 0, AWT_CANVAS_WIDTH, AWT_CANVAS_HEIGHT, true, null); + canvas.restore(); } - canvas.drawText("FPS: " + (Math.round(fps() * 10) / 10) + ", attached=" + mAttached + ", drawing=" + mDrawing, 0, 20, mFpsPaint); + canvas.drawText("FPS: " + (Math.round(fps() * 10) / 10) + ", drawing=" + mDrawing, 0, 20, mFpsPaint); surface.unlockCanvasAndPost(canvas); } } catch (Throwable throwable) { diff --git a/app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java b/app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java index d4e5ed576..3bb78916f 100644 --- a/app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java +++ b/app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java @@ -2,18 +2,13 @@ package org.lwjgl.glfw; import net.kdt.pojavlaunch.*; import android.content.*; -import android.telecom.Call; import android.view.Choreographer; - -import java.lang.ref.WeakReference; import java.util.ArrayList; public class CallbackBridge { public static Choreographer sChoreographer = Choreographer.getInstance(); private static boolean isGrabbing = false; private static final ArrayList grabListeners = new ArrayList<>(); - - public static final int ANDROID_TYPE_GRAB_STATE = 0; public static final int CLIPBOARD_COPY = 2000; public static final int CLIPBOARD_PASTE = 2001; @@ -22,7 +17,6 @@ public class CallbackBridge { public static volatile int windowWidth, windowHeight; public static volatile int physicalWidth, physicalHeight; public static float mouseX, mouseY; - private static boolean threadAttached; public volatile static boolean holdingAlt, holdingCapslock, holdingCtrl, holdingNumlock, holdingShift; @@ -38,10 +32,6 @@ public class CallbackBridge { public static void sendCursorPos(float x, float y) { - if (!threadAttached) { - threadAttached = CallbackBridge.nativeAttachThreadToOther(true, MainActivity.isInputStackCall); - } - mouseX = x; mouseY = y; nativeSendCursorPos(mouseX, mouseY); @@ -226,7 +216,6 @@ public class CallbackBridge { } public static native void nativeSetUseInputStackQueue(boolean useInputStackQueue); - public static native boolean nativeAttachThreadToOther(boolean isAndroid, boolean isUsePushPoll); private static native boolean nativeSendChar(char codepoint); // GLFW: GLFWCharModsCallback deprecated, but is Minecraft still use? @@ -238,8 +227,6 @@ public class CallbackBridge { private static native void nativeSendScroll(double xoffset, double yoffset); private static native void nativeSendScreenSize(int width, int height); public static native void nativeSetWindowAttrib(int attrib, int value); - - public static native boolean nativeIsGrabbing(); static { System.loadLibrary("pojavexec"); } diff --git a/app_pojavlauncher/src/main/jni/environ/environ.h b/app_pojavlauncher/src/main/jni/environ/environ.h index 73f18a23e..56814a406 100644 --- a/app_pojavlauncher/src/main/jni/environ/environ.h +++ b/app_pojavlauncher/src/main/jni/environ/environ.h @@ -34,7 +34,6 @@ struct pojav_environ_s { bool force_vsync; atomic_size_t eventCounter; GLFWInputEvent events[8000]; - float grabCursorX, grabCursorY, lastCursorX, lastCursorY; double cursorX, cursorY, cLastX, cLastY; jmethodID method_accessAndroidClipboard; jmethodID method_onGrabStateChanged; @@ -49,7 +48,7 @@ struct pojav_environ_s { JavaVM* dalvikJavaVMPtr; JNIEnv* dalvikJNIEnvPtr_ANDROID; long showingWindow; - bool isInputReady, isCursorEntered, isPrepareGrabPos, isUseStackQueueCall; + bool isInputReady, isCursorEntered, isUseStackQueueCall; int savedWidth, savedHeight; #define ADD_CALLBACK_WWIN(NAME) \ GLFW_invoke_##NAME##_func* GLFW_invoke_##NAME; diff --git a/app_pojavlauncher/src/main/jni/input_bridge_v3.c b/app_pojavlauncher/src/main/jni/input_bridge_v3.c index 2dba00423..f35647f6d 100644 --- a/app_pojavlauncher/src/main/jni/input_bridge_v3.c +++ b/app_pojavlauncher/src/main/jni/input_bridge_v3.c @@ -203,16 +203,6 @@ Java_org_lwjgl_glfw_CallbackBridge_nativeSetUseInputStackQueue(__attribute__((un pojav_environ->isUseStackQueueCall = (int) use_input_stack_queue; } -JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeAttachThreadToOther(__attribute__((unused)) JNIEnv* env, __attribute__((unused)) jclass clazz, jboolean isAndroid, jboolean __attribute__((unused)) isUseStackQueueBool) { -#ifdef DEBUG - LOGD("Debug: JNI attaching thread, isUseStackQueue=%d\n", isUseStackQueueBool); -#endif - if (pojav_environ->isUseStackQueueCall && isAndroid) { - pojav_environ->isPrepareGrabPos = true; - } - return true; -} - JNIEXPORT jstring JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeClipboard(JNIEnv* env, __attribute__((unused)) jclass clazz, jint action, jbyteArray copySrc) { #ifdef DEBUG LOGD("Debug: Clipboard access is going on\n", pojav_environ->isUseStackQueueCall); @@ -251,21 +241,12 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSetInputRead return pojav_environ->isUseStackQueueCall; } -static void updateGrabCursor(float xset, float yset) { - if (pojav_environ->isGrabbing == JNI_TRUE) { - pojav_environ->grabCursorX = xset; // pojav_environ->savedWidth / 2; - pojav_environ->grabCursorY = yset; // pojav_environ->savedHeight / 2; - pojav_environ->isPrepareGrabPos = true; - } -} - JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSetGrabbing(__attribute__((unused)) JNIEnv* env, __attribute__((unused)) jclass clazz, jboolean grabbing) { JNIEnv *dalvikEnv; (*pojav_environ->dalvikJavaVMPtr)->AttachCurrentThread(pojav_environ->dalvikJavaVMPtr, &dalvikEnv, NULL); (*dalvikEnv)->CallStaticVoidMethod(dalvikEnv, pojav_environ->bridgeClazz, pojav_environ->method_onGrabStateChanged, grabbing); (*pojav_environ->dalvikJavaVMPtr)->DetachCurrentThread(pojav_environ->dalvikJavaVMPtr); pojav_environ->isGrabbing = grabbing; - updateGrabCursor((float)pojav_environ->cursorX, (float)pojav_environ->cursorY); } JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSendChar(__attribute__((unused)) JNIEnv* env, __attribute__((unused)) jclass clazz, jchar codepoint /* jint codepoint */) { @@ -321,30 +302,12 @@ JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSendCursorPos(__ } } - if (pojav_environ->isGrabbing) { - if (!pojav_environ->isPrepareGrabPos) { - pojav_environ->grabCursorX += x - pojav_environ->lastCursorX; - pojav_environ->grabCursorY += y - pojav_environ->lastCursorY; - } - - pojav_environ->lastCursorX = x; - pojav_environ->lastCursorY = y; - - if (pojav_environ->isPrepareGrabPos) { - pojav_environ->isPrepareGrabPos = false; - return; - } - } - if (!pojav_environ->isUseStackQueueCall) { pojav_environ->GLFW_invoke_CursorPos((void*) pojav_environ->showingWindow, (double) (x), (double) (y)); } else { pojav_environ->cursorX = x; pojav_environ->cursorY = y; } - - pojav_environ->lastCursorX = x; - pojav_environ->lastCursorY = y; } } #define max(a,b) \ @@ -367,8 +330,6 @@ JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSendKey(__attrib JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSendMouseButton(__attribute__((unused)) JNIEnv* env, __attribute__((unused)) jclass clazz, jint button, jint action, jint mods) { if (pojav_environ->isInputReady) { if (button == -1) { - // Notify to prepare set new grab pos - pojav_environ->isPrepareGrabPos = true; } else if (pojav_environ->GLFW_invoke_MouseButton) { if (pojav_environ->isUseStackQueueCall) { sendData(EVENT_TYPE_MOUSE_BUTTON, button, action, mods, 0);