fix(client/laststand): counting down at double speed #102
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
StartLastStand() is invoked when the player takes damage, however waits for the player to stop moving to actually change the state bag value. Thus if the player takes further damage while rag dolling, StartLastStand() is triggered again. This results in multiple threads being created which count down the counter.
The solution in this PR is to acquire an exclusive lock so that StartLastStand() cannot be running in two separate threads.
An alternative solution would be to move the waiting for the player to stop moving to the call sites of StartLastStand() and instead of using a lock, just check the state bag value isn't already in last stand.