From 0451a70b6e533302c440a0cac9b50e4f4de1fe77 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)); }