From 5855b1ef931caa44fb76c3db49b4e335aaf6f625 Mon Sep 17 00:00:00 2001 From: SerpentSpirale Date: Mon, 19 Jul 2021 11:47:04 +0200 Subject: [PATCH] Revert "Revert "light optimisation of motion events on Gamepad.java"" This reverts commit ebf90783117db65c097f4626e900cf241a60a2a4. --- .../customcontrols/gamepad/Gamepad.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java index 58c65f17b..abb0b45c2 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java @@ -7,6 +7,7 @@ import android.view.MotionEvent; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.Toast; import androidx.core.math.MathUtils; @@ -54,6 +55,7 @@ public class Gamepad { private GamepadMap currentMap = gameMap; private boolean lastGrabbingState = true; + private MotionEvent lastMotionEvent = null; private final Thread mouseThread; @@ -61,6 +63,8 @@ public class Gamepad { private final Runnable switchStateRunnable; public Gamepad(BaseMainActivity gameActivity, InputDevice inputDevice){ + Toast.makeText(gameActivity.getApplicationContext(),"GAMEPAD CREATED", Toast.LENGTH_LONG).show(); + leftJoystick = new GamepadJoystick(MotionEvent.AXIS_X, MotionEvent.AXIS_Y, inputDevice); rightJoystick = new GamepadJoystick(MotionEvent.AXIS_Z, MotionEvent.AXIS_RZ, inputDevice); @@ -103,6 +107,12 @@ public class Gamepad { } private void tick(){ + if(lastMotionEvent != null){ + updateDirectionalJoystick(lastMotionEvent); + updateMouseJoystick(lastMotionEvent); + updateAnalogTriggers(lastMotionEvent); + } + if(lastHorizontalValue != 0 || lastVerticalValue != 0){ GamepadJoystick currentJoystick = CallbackBridge.isGrabbing() ? leftJoystick : rightJoystick; @@ -234,10 +244,9 @@ public class Gamepad { } public void update(MotionEvent event){ - gamepadDpad.update(event); - updateDirectionalJoystick(event); - updateMouseJoystick(event); - updateAnalogTriggers(event); + lastMotionEvent = event; + if(gamepadDpad.update(event) != -1) return; + //The rest of events are now sent each 1/60 second. } private void updateMouseJoystick(MotionEvent event){ @@ -401,12 +410,12 @@ public class Gamepad { break; case LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT: - CallbackBridge.putMouseEventWithCoords(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown?1:0, CallbackBridge.mouseX, CallbackBridge.mouseY); - //MainActivity.sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown); + //CallbackBridge.putMouseEventWithCoords(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown?1:0, CallbackBridge.mouseX, CallbackBridge.mouseY); + MainActivity.sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown); break; case LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_LEFT: - CallbackBridge.putMouseEventWithCoords(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_LEFT, isDown?1:0, CallbackBridge.mouseX, CallbackBridge.mouseY); - //MainActivity.sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_LEFT, isDown); + //CallbackBridge.putMouseEventWithCoords(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_LEFT, isDown?1:0, CallbackBridge.mouseX, CallbackBridge.mouseY); + MainActivity.sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_LEFT, isDown); break;