diff options
| author | german77 <juangerman-13@hotmail.com> | 2022-05-22 20:34:32 -0500 |
|---|---|---|
| committer | Narr the Reg <juangerman-13@hotmail.com> | 2022-05-23 11:01:14 -0500 |
| commit | b6d3a7d8cf99655cd90dff6f01517edc870ca1ce (patch) | |
| tree | 60f52dfd3e59f1424d03ab71a8cb28b9b845d486 /src/core/hle/service/hid/controllers/touchscreen.cpp | |
| parent | 6c08d6ce1c1c827b9e8db47c0ec18e5de887ceb9 (diff) | |
input_common: touch: Rewrite touch driver to support multiple touch points
Diffstat (limited to 'src/core/hle/service/hid/controllers/touchscreen.cpp')
| -rw-r--r-- | src/core/hle/service/hid/controllers/touchscreen.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/hle/service/hid/controllers/touchscreen.cpp b/src/core/hle/service/hid/controllers/touchscreen.cpp index 108ce5a415..1da8d3eb0b 100644 --- a/src/core/hle/service/hid/controllers/touchscreen.cpp +++ b/src/core/hle/service/hid/controllers/touchscreen.cpp @@ -44,7 +44,6 @@ void Controller_Touchscreen::OnUpdate(const Core::Timing::CoreTiming& core_timin for (std::size_t id = 0; id < MAX_FINGERS; id++) { const auto& current_touch = touch_status[id]; auto& finger = fingers[id]; - finger.position = current_touch.position; finger.id = current_touch.id; if (finger.attribute.start_touch) { @@ -61,13 +60,18 @@ void Controller_Touchscreen::OnUpdate(const Core::Timing::CoreTiming& core_timin if (!finger.pressed && current_touch.pressed) { finger.attribute.start_touch.Assign(1); finger.pressed = true; + finger.position = current_touch.position; continue; } if (finger.pressed && !current_touch.pressed) { finger.attribute.raw = 0; finger.attribute.end_touch.Assign(1); + continue; } + + // Only update position if touch is not on a special frame + finger.position = current_touch.position; } std::array<Core::HID::TouchFinger, MAX_FINGERS> active_fingers; |
