From 9987e5aac785ff5daef17a66c43d58bdd489bc0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Velad=20Galv=C3=A1n?= Date: Tue, 29 Oct 2024 10:38:09 +0100 Subject: [PATCH] fix(AirPlay): Don't show subtitles on the player when using AirPlay (#7514) This only happens when using src= mode --- lib/player.js | 46 ++++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/lib/player.js b/lib/player.js index 7396f63b91..f38057ca6f 100644 --- a/lib/player.js +++ b/lib/player.js @@ -2929,22 +2929,36 @@ shaka.Player = class extends shaka.util.FakeEventTarget { if (mediaElement.textTracks) { this.createTextDisplayer_(); - this.loadEventManager_.listen( - mediaElement, 'enterpictureinpicture', () => { - const track = this.getFilteredTextTracks_() - .find((t) => t.mode !== 'disabled'); - if (track) { - track.mode = 'showing'; - } - }); - this.loadEventManager_.listen( - mediaElement, 'leavepictureinpicture', () => { - const track = this.getFilteredTextTracks_() - .find((t) => t.mode !== 'disabled'); - if (track) { - track.mode = 'hidden'; - } - }); + const setShowingMode = () => { + const track = this.getFilteredTextTracks_() + .find((t) => t.mode !== 'disabled'); + if (track) { + track.mode = 'showing'; + } + }; + const setHiddenMode = () => { + const track = this.getFilteredTextTracks_() + .find((t) => t.mode !== 'disabled'); + if (track) { + track.mode = 'hidden'; + } + }; + this.loadEventManager_.listen(mediaElement, 'enterpictureinpicture', + () => setShowingMode()); + this.loadEventManager_.listen(mediaElement, 'leavepictureinpicture', + () => setHiddenMode()); + if (mediaElement.remote) { + this.loadEventManager_.listen(mediaElement.remote, 'connect', + () => setHiddenMode()); + this.loadEventManager_.listen(mediaElement.remote, 'connecting', + () => setHiddenMode()); + this.loadEventManager_.listen(mediaElement.remote, 'disconnect', + () => setHiddenMode()); + } else if ('webkitCurrentPlaybackTargetIsWireless' in mediaElement) { + this.loadEventManager_.listen(mediaElement, + 'webkitcurrentplaybacktargetiswirelesschanged', + () => setHiddenMode()); + } } // Add all media element listeners. this.addBasicMediaListeners_(mediaElement, startTimeOfLoad);