summaryrefslogtreecommitdiff
path: root/Source/Android/jni/AndroidCommon/IDCache.cpp
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2025-03-16 11:05:06 +0100
committerJosJuice <josjuice@gmail.com>2025-03-23 21:39:04 +0100
commit516c1314d2e08a81aa707566265597d82591e22c (patch)
tree6412ab67ada4d97456772b96bdbe68ac6f104540 /Source/Android/jni/AndroidCommon/IDCache.cpp
parent1515cf6ccdd1ba206c8e0eaabad07de28a4f5939 (diff)
Android: Don't use separate thread for MotionAlertDialog
This is an Android continuation of bc95c00. We now call InputDetector::Update immediately after receiving an input event from Android instead of periodically calling it in a sleep loop. This improves detection of very short inputs, which are especially likely to occur for volume buttons on phones (or at least on my phone) if you don't intentionally keep them held down.
Diffstat (limited to 'Source/Android/jni/AndroidCommon/IDCache.cpp')
-rw-r--r--Source/Android/jni/AndroidCommon/IDCache.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/Source/Android/jni/AndroidCommon/IDCache.cpp b/Source/Android/jni/AndroidCommon/IDCache.cpp
index 33a679bf55..ed382745c0 100644
--- a/Source/Android/jni/AndroidCommon/IDCache.cpp
+++ b/Source/Android/jni/AndroidCommon/IDCache.cpp
@@ -113,6 +113,9 @@ static jclass s_core_device_control_class;
static jfieldID s_core_device_control_pointer;
static jmethodID s_core_device_control_constructor;
+static jclass s_input_detector_class;
+static jfieldID s_input_detector_pointer;
+
static jmethodID s_runnable_run;
namespace IDCache
@@ -525,6 +528,16 @@ jmethodID GetCoreDeviceControlConstructor()
return s_core_device_control_constructor;
}
+jclass GetInputDetectorClass()
+{
+ return s_input_detector_class;
+}
+
+jfieldID GetInputDetectorPointer()
+{
+ return s_input_detector_pointer;
+}
+
jmethodID GetRunnableRun()
{
return s_runnable_run;
@@ -746,6 +759,12 @@ JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved)
"(Lorg/dolphinemu/dolphinemu/features/input/model/CoreDevice;J)V");
env->DeleteLocalRef(core_device_control_class);
+ const jclass input_detector_class =
+ env->FindClass("org/dolphinemu/dolphinemu/features/input/model/InputDetector");
+ s_input_detector_class = reinterpret_cast<jclass>(env->NewGlobalRef(input_detector_class));
+ s_input_detector_pointer = env->GetFieldID(input_detector_class, "pointer", "J");
+ env->DeleteLocalRef(input_detector_class);
+
const jclass runnable_class = env->FindClass("java/lang/Runnable");
s_runnable_run = env->GetMethodID(runnable_class, "run", "()V");
env->DeleteLocalRef(runnable_class);
@@ -779,10 +798,11 @@ JNIEXPORT void JNI_OnUnload(JavaVM* vm, void* reserved)
env->DeleteGlobalRef(s_control_class);
env->DeleteGlobalRef(s_control_group_class);
env->DeleteGlobalRef(s_control_reference_class);
+ env->DeleteGlobalRef(s_control_group_container_class);
env->DeleteGlobalRef(s_emulated_controller_class);
env->DeleteGlobalRef(s_numeric_setting_class);
env->DeleteGlobalRef(s_core_device_class);
env->DeleteGlobalRef(s_core_device_control_class);
- env->DeleteGlobalRef(s_control_group_container_class);
+ env->DeleteGlobalRef(s_input_detector_class);
}
}