From 2c529b9db12a60eb3640975f6ea4802237e118fa Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sun, 23 Jan 2022 21:47:57 +0100 Subject: Android: Add new input mapping implementation --- Source/Android/jni/Input/ControlGroup.cpp | 51 +++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Source/Android/jni/Input/ControlGroup.cpp (limited to 'Source/Android/jni/Input/ControlGroup.cpp') diff --git a/Source/Android/jni/Input/ControlGroup.cpp b/Source/Android/jni/Input/ControlGroup.cpp new file mode 100644 index 0000000000..0e56774e84 --- /dev/null +++ b/Source/Android/jni/Input/ControlGroup.cpp @@ -0,0 +1,51 @@ +// Copyright 2022 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "jni/Input/ControlGroup.h" + +#include + +#include "Common/MsgHandler.h" +#include "InputCommon/ControllerEmu/ControlGroup/ControlGroup.h" +#include "jni/AndroidCommon/AndroidCommon.h" +#include "jni/AndroidCommon/IDCache.h" +#include "jni/Input/Control.h" + +static ControllerEmu::ControlGroup* GetPointer(JNIEnv* env, jobject obj) +{ + return reinterpret_cast( + env->GetLongField(obj, IDCache::GetControlGroupPointer())); +} + +jobject ControlGroupToJava(JNIEnv* env, ControllerEmu::ControlGroup* group) +{ + if (!group) + return nullptr; + + return env->NewObject(IDCache::GetControlGroupClass(), IDCache::GetControlGroupConstructor(), + reinterpret_cast(group)); +} + +extern "C" { + +JNIEXPORT jstring JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getUiName( + JNIEnv* env, jobject obj) +{ + return ToJString(env, Common::GetStringT(GetPointer(env, obj)->ui_name.c_str())); +} + +JNIEXPORT jint JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getControlCount( + JNIEnv* env, jobject obj) +{ + return static_cast(GetPointer(env, obj)->controls.size()); +} + +JNIEXPORT jobject JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getControl( + JNIEnv* env, jobject obj, jint i) +{ + return ControlToJava(env, GetPointer(env, obj)->controls[i].get()); +} +} -- cgit v1.2.3