diff options
| author | JosJuice <josjuice@gmail.com> | 2023-03-11 12:37:44 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-11 12:37:44 +0100 |
| commit | 62ff2f1030ae95ac0e5bf9ae02e9cc78664ab83e (patch) | |
| tree | 14c8c2abdaa0eb4c4dd55b4b8171bd354356b82e /Source/Android/jni/Input/ControlReference.cpp | |
| parent | 7b5c989f2d55796e5d925144d1a2f30bac4521b1 (diff) | |
| parent | 75fb1a7edfb12f490b08ab0b76a8e2f1536d2d9b (diff) | |
Merge pull request #11385 from JosJuice/android-input-overhaul
Android input overhaul
Diffstat (limited to 'Source/Android/jni/Input/ControlReference.cpp')
| -rw-r--r-- | Source/Android/jni/Input/ControlReference.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/Source/Android/jni/Input/ControlReference.cpp b/Source/Android/jni/Input/ControlReference.cpp new file mode 100644 index 0000000000..533c8cb1a0 --- /dev/null +++ b/Source/Android/jni/Input/ControlReference.cpp @@ -0,0 +1,61 @@ +// Copyright 2022 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "jni/Input/ControlReference.h" + +#include <string> + +#include <jni.h> + +#include "InputCommon/ControlReference/ControlReference.h" +#include "jni/AndroidCommon/AndroidCommon.h" +#include "jni/AndroidCommon/IDCache.h" + +ControlReference* ControlReferenceFromJava(JNIEnv* env, jobject control_reference) +{ + return reinterpret_cast<ControlReference*>( + env->GetLongField(control_reference, IDCache::GetControlReferencePointer())); +} + +jobject ControlReferenceToJava(JNIEnv* env, ControlReference* control_reference) +{ + if (!control_reference) + return nullptr; + + return env->NewObject(IDCache::GetControlReferenceClass(), + IDCache::GetControlReferenceConstructor(), + reinterpret_cast<jlong>(control_reference)); +} + +extern "C" { + +JNIEXPORT jdouble JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlReference_getState( + JNIEnv* env, jobject obj) +{ + return ControlReferenceFromJava(env, obj)->GetState<double>(); +} + +JNIEXPORT jstring JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlReference_getExpression( + JNIEnv* env, jobject obj) +{ + return ToJString(env, ControlReferenceFromJava(env, obj)->GetExpression()); +} + +JNIEXPORT jstring JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlReference_setExpression( + JNIEnv* env, jobject obj, jstring expr) +{ + const std::optional<std::string> result = + ControlReferenceFromJava(env, obj)->SetExpression(GetJString(env, expr)); + return result ? ToJString(env, *result) : nullptr; +} + +JNIEXPORT jboolean JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlReference_isInput( + JNIEnv* env, jobject obj) +{ + return static_cast<jboolean>(ControlReferenceFromJava(env, obj)->IsInput()); +} +} |
