From 5c738e154d42853079996c0c5b0b6a6bb045ff7b Mon Sep 17 00:00:00 2001 From: bunnei Date: Mon, 22 Jul 2019 21:55:15 -0400 Subject: [PATCH] android: jni: Sanitize analog stick inputs. - Fixes bug where joystick sometimes is unresponsive. --- src/android/app/src/main/jni/native.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index b08237172..29ed6451b 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -244,8 +244,10 @@ jboolean Java_org_citra_citra_1android_NativeLibrary_onGamePadEvent(JNIEnv* env, jboolean Java_org_citra_citra_1android_NativeLibrary_onGamePadMoveEvent(JNIEnv* env, jobject obj, jstring jDevice, jint Axis, jfloat x, jfloat y) { + // Clamp joystick movement to supported minimum and maximum // Citra uses an inverted y axis sent by the frontend - y = -y; + x = std::clamp(x, -1.f, 1.f); + y = std::clamp(-y, -1.f, 1.f); InputManager::AnalogHandler()->MoveJoystick(Axis, x, y); return static_cast(InputManager::AnalogHandler()->MoveJoystick(Axis, x, y)); }