Skip to content

Commit 8e00ce0

Browse files
author
Rene Damm
authored
FIX: ArgumentExceptions 'Invalid user' when re-enabling PlayerInputs (case 1198889, #1030).
1 parent 7362867 commit 8e00ce0

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

Assets/Tests/InputSystem/Plugins/UserTests.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -481,18 +481,20 @@ public void Users_CanUnpairDevicesAndRemoveUser()
481481
var user = InputUser.PerformPairingWithDevice(gamepad1);
482482
InputUser.PerformPairingWithDevice(gamepad2, user: user);
483483

484+
var originalUser = user;
484485
user.UnpairDevicesAndRemoveUser();
485486

487+
Assert.That(user, Is.EqualTo(default(InputUser)));
486488
Assert.That(user.valid, Is.False);
487489
Assert.That(InputUser.all, Is.Empty);
488490
Assert.That(receivedChanges, Is.EquivalentTo(new[]
489491
{
490-
new UserChange(user, InputUserChange.Added),
491-
new UserChange(user, InputUserChange.DevicePaired, gamepad1),
492-
new UserChange(user, InputUserChange.DevicePaired, gamepad2),
493-
new UserChange(user, InputUserChange.DeviceUnpaired, gamepad1),
494-
new UserChange(user, InputUserChange.DeviceUnpaired, gamepad2),
495-
new UserChange(user, InputUserChange.Removed),
492+
new UserChange(originalUser, InputUserChange.Added),
493+
new UserChange(originalUser, InputUserChange.DevicePaired, gamepad1),
494+
new UserChange(originalUser, InputUserChange.DevicePaired, gamepad2),
495+
new UserChange(originalUser, InputUserChange.DeviceUnpaired, gamepad1),
496+
new UserChange(originalUser, InputUserChange.DeviceUnpaired, gamepad2),
497+
new UserChange(originalUser, InputUserChange.Removed),
496498
}));
497499
}
498500

Packages/com.unity.inputsystem/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ however, it has to be formatted properly to pass verification tests.
1111

1212
### Fixed
1313

14+
#### Actions
15+
16+
- "Invalid user" `ArgumentException` when turning the same `PlayerInput` on and off ([case 1198889](https://issuetracker.unity3d.com/issues/input-system-package-argumentexception-invalid-user-error-is-thrown-when-the-callback-disables-game-object-with-playerinput)).
1417
- The list of device requirements for a control scheme in the action editor no longer displays devices with their internal layout name rather than their external display name.
1518

1619
## [1.0.0-preview.4] - 2020-01-24

Packages/com.unity.inputsystem/InputSystem/Plugins/Users/InputUser.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,8 @@ public void UnpairDevicesAndRemoveUser()
691691

692692
var userIndex = index;
693693
RemoveUser(userIndex);
694+
695+
m_Id = default;
694696
}
695697

696698
/// <summary>

0 commit comments

Comments
 (0)