InputSystem
InputSystem copied to clipboard
FIX: Ensure callback arrays are unlocked when invoked and returning true
Description
In DelegateHelpers.InvokeCallbacksSafe_AnyCallbackReturnsTrue, returning true bypasses unlocking the callback array. This causes an error when a Player Input that has been auto switched is deleted, and then a Player Input Manager attempts to join a new player.
Changes made
Added a test to replicate the error, and then fixed the issue by ensuring the callback array is always unlocked before returning from InvokeCallbacksSafe_AnyCallbackReturnsTrue.
Checklist
Before review:
- [ ] Changelog entry added.
- Explains the change in
Changed,Fixed,Addedsections. - For API change contains an example snippet and/or migration example.
- FogBugz ticket attached, example
([case %number%](https://issuetracker.unity3d.com/issues/...)). - FogBugz is marked as "Resolved" with next release version correctly set.
- Explains the change in
- [ ] Tests added/changed, if applicable.
- Functional tests
Area_CanDoX,Area_CanDoX_EvenIfYIsTheCase,Area_WhenIDoX_AndYHappens_ThisIsTheResult. - Performance tests.
- Integration tests.
- Functional tests
- [ ] Docs for new/changed API's.
- Xmldoc cross references are set correctly.
- Added explanation how the API works.
- Usage code examples added.
- The manual is updated, if needed.
During merge:
- [ ] Commit message for squash-merge is prefixed with one of the list:
NEW: ___.FIX: ___.DOCS: ___.CHANGE: ___.RELEASE: 1.1.0-preview.3.