Fix crash in PlayerCore.fileStarted, #3822 #4334
Merged
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.
This commit will:
Atomic
toPlaybackInfo.matchedSubs
getMatchedSubs
method toPlaybackInfo
AutoFileMatcher
,PlayerCore
andPlaylistViewController
to hold a lock while accessingmatchedSubs
Atomic
toPlayerCore.backgroundQueueTicket
PlayerCore.fileStarted
to hold a lock while incrementingbackgroundQueueTicket
PlayerCore.stop
that incrementsbackgroundQueueTicket
These changes insure the mutable Swift dictionary
matchedSubs
is only accessed by one thread at a time. Accessing a mutable dictionary from multiple threads without such coordination can result in a crash as seen in issue #3822.These changes also attempt to insure the background task that finds and loads subtitle files stops its work if playback is stopped before that process completes.
Description: