From 74551f6a3dcd782beb5fc639596cd0f8c5b7ad7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Bj=C3=B6rneheim?= Date: Thu, 12 Feb 2026 16:43:05 +0100 Subject: [PATCH] fix: emit TEXT_TRACK_CHANGE event when changing subtitles in ShakaTech Problem: When using ShakaTech (DASH streams) with the Eyevinn player skin, changing subtitles through the UI doesn't update the displayed text track. The subtitle selector shows available tracks, but selecting a different subtitle has no visible effect. Root Cause: ShakaTech's textTrack setter successfully calls Shaka Player's selectTextTrack() and setTextTrackVisibility() to change the active subtitle, but never emits the TEXT_TRACK_CHANGE event. This means: - Player state is never updated with the new text track selection - UI never receives notification via STATE_CHANGE event - Other components listening for text track changes are not notified Solution: Add onTextTrackChange() calls after changing tracks in the setter, following the same pattern already used for audio track changes (line 91). This ensures: - State is updated via updateState({ textTracks: this.textTracks }) - TEXT_TRACK_CHANGE event is emitted - Player relays STATE_CHANGE event to UI This fix follows the existing pattern used by: - ShakaTech's audioTrack setter (already calls onAudioTrackChange()) - HlsJsTech's text track handling (registers event listener) Co-Authored-By: Claude Sonnet 4.5 --- packages/core/src/tech/ShakaTech.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/core/src/tech/ShakaTech.ts b/packages/core/src/tech/ShakaTech.ts index 795817f..faf5dc2 100644 --- a/packages/core/src/tech/ShakaTech.ts +++ b/packages/core/src/tech/ShakaTech.ts @@ -111,8 +111,10 @@ export default class DashPlayer extends BaseTech { .getTextTracks() .find((t) => getTextTrackId(t) === trackId); this.shakaPlayer.selectTextTrack(internalTrack); + this.onTextTrackChange(); } else { this.shakaPlayer.setTextTrackVisibility(false); + this.onTextTrackChange(); } }