fix(subtitles): keep native secondary subtitles hidden (#232)

- Reapply hidden visibility after secondary track changes
- Relinquish suppression only after successful restoration
This commit is contained in:
2026-09-01 00:49:37 -07:00
committed by GitHub
parent a20269e9f5
commit fc5c49e365
5 changed files with 105 additions and 2 deletions
+9
View File
@@ -72,6 +72,7 @@ export interface MpvProtocolHandleMessageDeps {
emitSubtitleMetricsChange: (payload: Partial<MpvSubtitleRenderMetrics>) => void;
setCurrentSecondarySubText: (text: string) => void;
resolvePendingRequest: (requestId: number, message: MpvMessage) => boolean;
shouldEnforceSecondarySubVisibilityHidden: () => boolean;
setSecondarySubVisibility: (visible: boolean) => void;
syncCurrentAudioStreamIndex: () => void;
setCurrentAudioTrackId: (value: number | null) => void;
@@ -285,6 +286,9 @@ export async function dispatchMpvProtocolMessage(
: null;
deps.emitSubtitleTrackChange({ sid: sid !== null && Number.isInteger(sid) ? sid : null });
} else if (msg.name === 'secondary-sid') {
if (deps.shouldEnforceSecondarySubVisibilityHidden()) {
deps.setSecondarySubVisibility(false);
}
const sid =
typeof msg.data === 'number'
? msg.data
@@ -375,6 +379,11 @@ export async function dispatchMpvProtocolMessage(
if (deps.isVisibleOverlayVisible() && asBoolean(msg.data, false)) {
deps.sendCommand({ command: ['set_property', 'sub-visibility', false] });
}
} else if (msg.name === 'secondary-sub-visibility') {
const visible = parseVisibilityProperty(msg.data);
if (deps.shouldEnforceSecondarySubVisibilityHidden() && visible === true) {
deps.setSecondarySubVisibility(false);
}
} else if (msg.name === 'sub-use-margins') {
deps.emitSubtitleMetricsChange({
subUseMargins: asBoolean(msg.data, deps.getSubtitleMetrics().subUseMargins),