Skip to content

Commit 31df4e4

Browse files
authored
Merge pull request #8249 from karyogamy/caption-fix-2
Fix disabled caption to no longer automatically re-enable on new player instance
2 parents 0a2fc08 + 2b8eb7e commit 31df4e4

2 files changed

Lines changed: 19 additions & 6 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ on:
66
branches:
77
- dev
88
- master
9+
- release/**
910
paths-ignore:
1011
- 'README.md'
1112
- 'doc/**'

app/src/main/java/org/schabi/newpipe/player/Player.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3557,15 +3557,27 @@ private void buildCaptionMenu(@NonNull final List<String> availableLanguages) {
35573557
}
35583558

35593559
// apply caption language from previous user preference
3560-
final List<String> selectedPreferredLanguages =
3561-
trackSelector.getParameters().preferredTextLanguages;
3560+
final int textRendererIndex = getCaptionRendererIndex();
3561+
if (textRendererIndex == RENDERER_UNAVAILABLE) {
3562+
return;
3563+
}
3564+
3565+
// If user prefers to show no caption, then disable the renderer.
3566+
// Otherwise, DefaultTrackSelector may automatically find an available caption
3567+
// and display that.
35623568
final String userPreferredLanguage =
35633569
prefs.getString(context.getString(R.string.caption_user_set_key), null);
3564-
final int textRendererIndex = getCaptionRendererIndex();
3570+
if (userPreferredLanguage == null) {
3571+
trackSelector.setParameters(trackSelector.buildUponParameters()
3572+
.setRendererDisabled(textRendererIndex, true));
3573+
return;
3574+
}
35653575

3566-
if (userPreferredLanguage != null
3567-
&& !selectedPreferredLanguages.contains(userPreferredLanguage)
3568-
&& textRendererIndex != RENDERER_UNAVAILABLE) {
3576+
// Only set preferred language if it does not match the user preference,
3577+
// otherwise there might be an infinite cycle at onTextTracksChanged.
3578+
final List<String> selectedPreferredLanguages =
3579+
trackSelector.getParameters().preferredTextLanguages;
3580+
if (!selectedPreferredLanguages.contains(userPreferredLanguage)) {
35693581
trackSelector.setParameters(trackSelector.buildUponParameters()
35703582
.setPreferredTextLanguages(userPreferredLanguage,
35713583
PlayerHelper.captionLanguageStemOf(userPreferredLanguage))

0 commit comments

Comments
 (0)