Changeset 277433 in webkit
- Timestamp:
- May 13, 2021, 7:12:22 AM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 5 edited
-
ChangeLog (modified) (1 diff)
-
GPUProcess/media/RemoteTextTrackProxy.cpp (modified) (1 diff)
-
GPUProcess/media/TextTrackPrivateRemoteConfiguration.h (modified) (4 diffs)
-
WebProcess/GPU/media/TextTrackPrivateRemote.cpp (modified) (2 diffs)
-
WebProcess/GPU/media/TextTrackPrivateRemote.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r277428 r277433 1 2021-05-13 Peng Liu <peng.liu6@apple.com> 2 3 Subtitles in Safari fail to appear after switching language 4 https://bugs.webkit.org/show_bug.cgi?id=225738 5 6 Reviewed by Jer Noble. 7 8 `TextTrackPrivateRemote::setMode()` calls `InbandTextTrackPrivate::setMode()`, but 9 it does not set the value of `TextTrackPrivateRemote::mode` properly. Therefore, 10 `TextTrackPrivateRemote::mode` will always be `Disabled`. When we switch text track 11 in the WebContent process side, we will only send the IPC message `TextTrackSetMode` 12 to `RemoteMediaPlayerProxy` in the GPU process to change the mode from `Disabled` 13 to `Showing`, but cannot change its value back to `Disabled`. When a user keeps 14 switching text track, all text tracks in the GPU process will become `Showing`, 15 and `MediaPlayerPrivateAVFoundation` cannot deal with that. As a result, 16 the WebContent process won't get the correct subtitles from the GPU process. 17 `cueFormat()` has the similar issue, it does not impact the functionality though. 18 19 Actually, `TextTrackPrivateRemote` can simply use the implementations of its 20 base class `InbandTextTrackPrivate` regarding mode and cue format. 21 22 In addition, `TextTrackPrivateRemote` does not need to get the "mode" value from 23 `RemoteTextTrackProxy` in the GPU process. So this patch removes the `mode` attribute 24 of `TextTrackPrivateRemoteConfiguration`. 25 26 * GPUProcess/media/RemoteTextTrackProxy.cpp: 27 (WebKit::RemoteTextTrackProxy::configuration): 28 * GPUProcess/media/TextTrackPrivateRemoteConfiguration.h: 29 (WebKit::TextTrackPrivateRemoteConfiguration::encode const): 30 (WebKit::TextTrackPrivateRemoteConfiguration::decode): 31 * WebProcess/GPU/media/TextTrackPrivateRemote.cpp: 32 (WebKit::TextTrackPrivateRemote::setMode): 33 (WebKit::TextTrackPrivateRemote::updateConfiguration): 34 * WebProcess/GPU/media/TextTrackPrivateRemote.h: 35 1 36 2021-05-13 Carlos Garcia Campos <cgarcia@igalia.com> 2 37 -
trunk/Source/WebKit/GPUProcess/media/RemoteTextTrackProxy.cpp
r277372 r277433 70 70 71 71 configuration->cueFormat = m_trackPrivate->cueFormat(); 72 configuration->mode = m_trackPrivate->mode();73 72 configuration->isClosedCaptions = m_trackPrivate->isClosedCaptions(); 74 73 configuration->isSDH = m_trackPrivate->isSDH(); -
trunk/Source/WebKit/GPUProcess/media/TextTrackPrivateRemoteConfiguration.h
r270612 r277433 43 43 44 44 WebCore::InbandTextTrackPrivate::CueFormat cueFormat { WebCore::InbandTextTrackPrivate::CueFormat::Generic }; 45 WebCore::InbandTextTrackPrivate::Mode mode { WebCore::InbandTextTrackPrivate::Mode::Disabled };46 45 WebCore::InbandTextTrackPrivate::Kind kind { WebCore::InbandTextTrackPrivate::Kind::None }; 47 46 … … 63 62 encoder << trackIndex; 64 63 encoder << cueFormat; 65 encoder << mode;66 64 encoder << kind; 67 65 encoder << isClosedCaptions; … … 111 109 return WTF::nullopt; 112 110 113 Optional<WebCore::InbandTextTrackPrivate::Mode> mode;114 decoder >> mode;115 if (!mode)116 return WTF::nullopt;117 118 111 Optional<WebCore::InbandTextTrackPrivate::Kind> kind; 119 112 decoder >> kind; … … 159 152 *trackIndex, 160 153 *cueFormat, 161 *mode,162 154 *kind, 163 155 *isClosedCaptions, -
trunk/Source/WebKit/WebProcess/GPU/media/TextTrackPrivateRemote.cpp
r277372 r277433 52 52 return; 53 53 54 if (mode != m_mode)55 m_gpuProcessConnection->connection().send(Messages::RemoteMediaPlayerProxy::TextTrackSetMode(m_identifier, mode), m_playerIdentifier);54 if (mode == InbandTextTrackPrivate::mode()) 55 return; 56 56 57 m_gpuProcessConnection->connection().send(Messages::RemoteMediaPlayerProxy::TextTrackSetMode(m_identifier, mode), m_playerIdentifier); 57 58 InbandTextTrackPrivate::setMode(mode); 58 59 } … … 85 86 m_startTimeVariance = configuration.startTimeVariance; 86 87 87 m_format = configuration.cueFormat;88 88 m_kind = configuration.kind; 89 m_mode = configuration.mode;90 89 m_isClosedCaptions = configuration.isClosedCaptions; 91 90 m_isSDH = configuration.isSDH; -
trunk/Source/WebKit/WebProcess/GPU/media/TextTrackPrivateRemote.h
r277372 r277433 81 81 AtomString inBandMetadataTrackDispatchType() const final { return m_inBandMetadataTrackDispatchType; } 82 82 83 using TextTrackCueFormat = WebCore::InbandTextTrackPrivate::CueFormat;84 TextTrackCueFormat cueFormat() const final { return m_format; }85 86 83 using TextTrackKind = WebCore::InbandTextTrackPrivate::Kind; 87 84 TextTrackKind kind() const final { return m_kind; } … … 89 86 using TextTrackMode = WebCore::InbandTextTrackPrivate::Mode; 90 87 void setMode(TextTrackMode) final; 91 TextTrackMode mode() const final { return m_mode; }92 88 93 89 bool isClosedCaptions() const final { return m_isClosedCaptions; } … … 111 107 TrackPrivateRemoteIdentifier m_identifier; 112 108 113 TextTrackCueFormat m_format { TextTrackCueFormat::Generic };114 109 TextTrackKind m_kind { TextTrackKind::None }; 115 TextTrackMode m_mode { TextTrackMode::Disabled };116 110 bool m_isClosedCaptions { false }; 117 111 bool m_isSDH { false };
Note:
See TracChangeset
for help on using the changeset viewer.