diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2025-07-20 17:46:47 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-20 17:46:47 -0500 |
| commit | c39c8277b7fd570a4101bc621a9179f3ece10e6b (patch) | |
| tree | f008adea9d7dd39246e1834dbe985a7f3d886c02 /Source/Core/InputCommon/ControllerInterface | |
| parent | dccd8709d8c8df70493def8813dd8039dfe5ba16 (diff) | |
| parent | 43b254aaad5add867b719857d6f8b4fe2d6b750d (diff) | |
Merge pull request #13674 from JosJuice/android-visualize-input
Android: Show input indicators in controller settings
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface')
| -rw-r--r-- | Source/Core/InputCommon/ControllerInterface/Android/Android.cpp | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp b/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp index b6e03e73a0..476aaa5537 100644 --- a/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp +++ b/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp @@ -442,6 +442,25 @@ std::shared_ptr<ciface::Core::Device> FindDevice(jint device_id) return device; } +void RegisterDevicesChangedCallbackIfNeeded(JNIEnv* env, jclass controller_interface_class) +{ + static bool registered = false; + if (registered) + return; + registered = true; + + const jclass global_controller_interface_class = + reinterpret_cast<jclass>(env->NewGlobalRef(controller_interface_class)); + const jmethodID controller_interface_on_devices_changed = + env->GetStaticMethodID(global_controller_interface_class, "onDevicesChanged", "()V"); + + g_controller_interface.RegisterDevicesChangedCallback( + [global_controller_interface_class, controller_interface_on_devices_changed] { + IDCache::GetEnvForThread()->CallStaticVoidMethod(global_controller_interface_class, + controller_interface_on_devices_changed); + }); +} + } // namespace namespace ciface::Android @@ -903,6 +922,8 @@ InputBackend::InputBackend(ControllerInterface* controller_interface) env->CallStaticVoidMethod(s_controller_interface_class, s_controller_interface_register_input_device_listener); + + RegisterDevicesChangedCallbackIfNeeded(env, s_controller_interface_class); } InputBackend::~InputBackend() @@ -1002,7 +1023,7 @@ void InputBackend::PopulateDevices() extern "C" { JNIEXPORT jboolean JNICALL -Java_org_dolphinemu_dolphinemu_features_input_model_ControllerInterface_dispatchKeyEvent( +Java_org_dolphinemu_dolphinemu_features_input_model_ControllerInterface_dispatchKeyEventNative( JNIEnv* env, jclass, jobject key_event) { const jint action = env->CallIntMethod(key_event, s_key_event_get_action); @@ -1046,7 +1067,7 @@ Java_org_dolphinemu_dolphinemu_features_input_model_ControllerInterface_dispatch } JNIEXPORT jboolean JNICALL -Java_org_dolphinemu_dolphinemu_features_input_model_ControllerInterface_dispatchGenericMotionEvent( +Java_org_dolphinemu_dolphinemu_features_input_model_ControllerInterface_dispatchGenericMotionEventNative( JNIEnv* env, jclass, jobject motion_event) { const jint device_id = env->CallIntMethod(motion_event, s_input_event_get_device_id); @@ -1090,7 +1111,7 @@ Java_org_dolphinemu_dolphinemu_features_input_model_ControllerInterface_dispatch } JNIEXPORT jboolean JNICALL -Java_org_dolphinemu_dolphinemu_features_input_model_ControllerInterface_dispatchSensorEvent( +Java_org_dolphinemu_dolphinemu_features_input_model_ControllerInterface_dispatchSensorEventNative( JNIEnv* env, jclass, jstring j_device_qualifier, jstring j_axis_name, jfloat value) { ciface::Core::DeviceQualifier device_qualifier; |
