Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
d280dff
FIX: ISXB-687 Added guard clause to RemovePointerAtIndex in InputSy…
adrian-koretski-unity3d Aug 12, 2024
8d3ca93
Added changelog entry for fix ISXB-543
adrian-koretski-unity3d Aug 12, 2024
cb1bfb3
Merge branch 'develop' into isxb-543-fix-touch-double-remove
adrian-koretski-unity3d Aug 13, 2024
e600067
Merge branch 'develop' into isxb-543-fix-touch-double-remove
adrian-koretski-unity3d Sep 5, 2024
1cbfe3e
Merge branch 'develop' into isxb-543-fix-touch-double-remove
adrian-koretski-unity3d Sep 6, 2024
1f4e41c
Fixed infinite loop caused by FilterPointerStatesByType() trying to f…
adrian-koretski-unity3d Sep 12, 2024
6715e26
Merge branch 'develop' into isxb-543-fix-touch-double-remove
adrian-koretski-unity3d Sep 12, 2024
84e2ca4
Fixed issue where touch pointers don't get released when mouse or pen…
adrian-koretski-unity3d Sep 16, 2024
d952c79
Merge branch 'isxb-543-fix-touch-double-remove' of https://github.com…
adrian-koretski-unity3d Sep 16, 2024
22183df
Fixed incorrect boolean logic in InputSystemUIInputModule.cs causing …
adrian-koretski-unity3d Sep 17, 2024
11b8a0e
Moved changelog entry for ISXB-687 into unreleased.
adrian-koretski-unity3d Sep 19, 2024
456f737
Merge branch 'develop' into isxb-543-fix-touch-double-remove
adrian-koretski-unity3d Sep 20, 2024
43c0e80
Merge branch 'develop' of https://github.com/Unity-Technologies/Input…
adrian-koretski-unity3d Sep 24, 2024
c0d58cf
Merge branch 'develop' into isxb-543-fix-touch-double-remove
adrian-koretski-unity3d Sep 25, 2024
355499c
Fixed duplicate entry in CHANGELOG
adrian-koretski-unity3d Sep 27, 2024
4671f6f
Merge branch 'isxb-543-fix-touch-double-remove' of https://github.com…
adrian-koretski-unity3d Sep 27, 2024
2eafdde
Merge branch 'develop' of https://github.com/Unity-Technologies/Input…
adrian-koretski-unity3d Sep 27, 2024
efe6c3c
Moved double touch pointer changelog entry to unreleased.
adrian-koretski-unity3d Sep 27, 2024
cd89b85
Removed additional duplicate entries in changelog
adrian-koretski-unity3d Sep 27, 2024
b40142f
Merge branch 'develop' of https://github.com/Unity-Technologies/Input…
adrian-koretski-unity3d Sep 27, 2024
9699703
Removed superfluous code to get pointer state that is never used in I…
adrian-koretski-unity3d Sep 27, 2024
667c1dc
Merge branch 'develop' into isxb-543-fix-touch-double-remove
adrian-koretski-unity3d Oct 1, 2024
bb5b327
Merge branch 'develop' into isxb-543-fix-touch-double-remove
adrian-koretski-unity3d Oct 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Packages/com.unity.inputsystem/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ however, it has to be formatted properly to pass verification tests.
## [Unreleased] - yyyy-mm-dd

### Fixed
- Fixed touch pointers being released twice causing an index out of bounds error. [ISXB-687](https://issuetracker.unity3d.com/product/unity/issues/guid/ISXB-687)
- Fixed `NullReferenceException` from disconnecting and reconnecting a GXDKGamepad.

### Added
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1947,6 +1947,13 @@ private void RemovePointerAtIndex(int index)
{
Debug.Assert(m_PointerStates[index].eventData.pointerEnter == null, "Pointer should have exited all objects before being removed");

// We don't want to release touch pointers on the same frame they are released (unpressed). They get cleaned up one frame later in Process()
ref var state = ref GetPointerStateForIndex(index);
if (state.pointerType == UIPointerType.Touch && (state.leftButton.isPressed || state.leftButton.wasReleasedThisFrame))
{
return;
}

// Retain event data so that we can reuse the event the next time we allocate a PointerModel record.
var eventData = m_PointerStates[index].eventData;
Debug.Assert(eventData != null, "Pointer state should have an event instance!");
Expand Down Expand Up @@ -2209,7 +2216,13 @@ private void FilterPointerStatesByType()
// We have input on a mouse or pen. Kill all touch and tracked pointers we may have.
for (var i = 0; i < m_PointerStates.length; ++i)
{
if (m_PointerStates[i].pointerType != UIPointerType.MouseOrPen)
ref var state = ref GetPointerStateForIndex(i);
// Touch pointers need to get forced to no longer be pressed otherwise they will not get released in subsequent frames.
if (m_PointerStates[i].pointerType == UIPointerType.Touch)
{
state.leftButton.isPressed = false;
}
if (m_PointerStates[i].pointerType != UIPointerType.MouseOrPen && m_PointerStates[i].pointerType != UIPointerType.Touch || (m_PointerStates[i].pointerType == UIPointerType.Touch && !state.leftButton.isPressed && !state.leftButton.wasReleasedThisFrame))
{
SendPointerExitEventsAndRemovePointer(i);
--i;
Expand Down