Cherry pick PR #3027: [Android] Fix CPU spinning of StarboardMain. #3045
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.
Refer to the original PR: #3027
An integer overflow in a downconversion resulted in a negative timeout being used for the ALooper_pollAll call.
This fixes that, and adds a ALooper_wake when a non-system event is injectet.
Change
handle_system_events_
frombool
toatomic_bool
to make it thread safe. Replace deprecatedALooper_pollAll
with the suggestedALooper_pollOnce
(*1) to avoid swallowing ofALooper_wake
calls.Left the
kMaxPollingTimeMillisecond
workaround for swallowed wake calls in place, but increased the timeout to one second to minimize CPU usage.*1: https://developer.android.com/ndk/reference/group/looper#group___looper_1gab2585652f8ae2e2444979194ebe32aaf
b/335901937