mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	android: Map touches to touchscreen
I neglected to map touches to the touchscreen when refactoring in the input mapping PR. This fixes that regression.
This commit is contained in:
		@@ -23,6 +23,22 @@ void EmuWindow_Android::OnSurfaceChanged(ANativeWindow* surface) {
 | 
			
		||||
    window_info.render_surface = reinterpret_cast<void*>(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<void>(
 | 
			
		||||
 
 | 
			
		||||
@@ -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<Core::Frontend::GraphicsContext> CreateSharedContext() const override {
 | 
			
		||||
        return {std::make_unique<GraphicsContext_Android>(m_driver_library)};
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user