Fix app crash or freeze on quit#136
Merged
Depal1 merged 1 commit intoPlayCover:masterfrom Jan 30, 2024
Merged
Conversation
TheMoonThatRises
approved these changes
Jan 29, 2024
Depal1
approved these changes
Jan 30, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes PlayCover/PlayCover/issues/689 and PlayCover/PlayCover/issues/1165
This issue occasionally occurs to Genshin Impact, but always happens for most other games. For example Ni No Kuni and ToF, which have 100% probability of encountering this. With this PR, neither of them crash or freeze anymore.
The root cause of this issue lies in the fact that the app is being forcefully terminated without completing its termination procedures. These procedures may involve ending metal commands and synchronizing data to disk, among other things. In the worst-case scenario, if these termination tasks are not completed successfully, it can result in data corruption and lead to the game crashing upon subsequent launches.
This PR follows the termination procedures here, blocking main thread before all these callbacks end.
This may delay app termination for up to 5 seconds, which is comparable to normal termination time of other macOS apps.
Update: Tested more on Genshin and Honkai Star Rail and works perfectly.