summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2025-07-20 17:46:47 -0500
committerGitHub <noreply@github.com>2025-07-20 17:46:47 -0500
commitc39c8277b7fd570a4101bc621a9179f3ece10e6b (patch)
treef008adea9d7dd39246e1834dbe985a7f3d886c02 /Source/Core/InputCommon/ControllerInterface
parentdccd8709d8c8df70493def8813dd8039dfe5ba16 (diff)
parent43b254aaad5add867b719857d6f8b4fe2d6b750d (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.cpp27
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;