From 0a3bc6c0cf2698c236b8ea106d2ca3d21466ccba Mon Sep 17 00:00:00 2001 From: t895 Date: Sun, 18 Feb 2024 10:00:37 -0500 Subject: android: Map touches to touchscreen I neglected to map touches to the touchscreen when refactoring in the input mapping PR. This fixes that regression. --- src/android/app/src/main/jni/emu_window/emu_window.cpp | 16 ++++++++++++++++ src/android/app/src/main/jni/emu_window/emu_window.h | 4 ++++ src/android/app/src/main/jni/native_input.cpp | 8 +++----- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/android/app/src/main/jni/emu_window/emu_window.cpp b/src/android/app/src/main/jni/emu_window/emu_window.cpp index 2768a01c9..06db55369 100644 --- a/src/android/app/src/main/jni/emu_window/emu_window.cpp +++ b/src/android/app/src/main/jni/emu_window/emu_window.cpp @@ -23,6 +23,22 @@ void EmuWindow_Android::OnSurfaceChanged(ANativeWindow* surface) { window_info.render_surface = reinterpret_cast(surface); } +void EmuWindow_Android::OnTouchPressed(int id, float x, float y) { + const auto [touch_x, touch_y] = MapToTouchScreen(x, y); + EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchPressed(touch_x, + touch_y, id); +} + +void EmuWindow_Android::OnTouchMoved(int id, float x, float y) { + const auto [touch_x, touch_y] = MapToTouchScreen(x, y); + EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchMoved(touch_x, + touch_y, id); +} + +void EmuWindow_Android::OnTouchReleased(int id) { + EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchReleased(id); +} + void EmuWindow_Android::OnFrameDisplayed() { if (!m_first_frame) { Common::Android::RunJNIOnFiber( diff --git a/src/android/app/src/main/jni/emu_window/emu_window.h b/src/android/app/src/main/jni/emu_window/emu_window.h index 34704ae95..d7b5fc6da 100644 --- a/src/android/app/src/main/jni/emu_window/emu_window.h +++ b/src/android/app/src/main/jni/emu_window/emu_window.h @@ -38,6 +38,10 @@ public: void OnSurfaceChanged(ANativeWindow* surface); void OnFrameDisplayed() override; + void OnTouchPressed(int id, float x, float y); + void OnTouchMoved(int id, float x, float y); + void OnTouchReleased(int id); + std::unique_ptr CreateSharedContext() const override { return {std::make_unique(m_driver_library)}; } diff --git a/src/android/app/src/main/jni/native_input.cpp b/src/android/app/src/main/jni/native_input.cpp index ddf2f297b..37a65f2b8 100644 --- a/src/android/app/src/main/jni/native_input.cpp +++ b/src/android/app/src/main/jni/native_input.cpp @@ -190,8 +190,7 @@ void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_onTouchPressed(JNIEnv* e jint j_id, jfloat j_x_axis, jfloat j_y_axis) { if (EmulationSession::GetInstance().IsRunning()) { - EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchPressed( - j_id, j_x_axis, j_y_axis); + EmulationSession::GetInstance().Window().OnTouchPressed(j_id, j_x_axis, j_y_axis); } } @@ -199,15 +198,14 @@ void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_onTouchMoved(JNIEnv* env jint j_id, jfloat j_x_axis, jfloat j_y_axis) { if (EmulationSession::GetInstance().IsRunning()) { - EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchMoved( - j_id, j_x_axis, j_y_axis); + EmulationSession::GetInstance().Window().OnTouchMoved(j_id, j_x_axis, j_y_axis); } } void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_onTouchReleased(JNIEnv* env, jobject j_obj, jint j_id) { if (EmulationSession::GetInstance().IsRunning()) { - EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchReleased(j_id); + EmulationSession::GetInstance().Window().OnTouchReleased(j_id); } } -- cgit v1.2.3