Skip to content

Commit

Permalink
Apply patch. rdar://123274678
Browse files Browse the repository at this point in the history
  • Loading branch information
drobson1005 committed Feb 20, 2024
1 parent 06eafcf commit a6b5343
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 8 deletions.
3 changes: 2 additions & 1 deletion LayoutTests/platform/ios/TestExpectations
Original file line number Diff line number Diff line change
Expand Up @@ -3374,7 +3374,8 @@ http/tests/websocket/tests/hybi/workers/worker-reload.html [ Pass Crash ]
http/tests/workers/service/service-worker-download-async-delegates.https.html [ Pass Crash ]

# rdar://80396393 ([ iOS15 ] http/wpt/mediarecorder/mute-tracks.html is a flaky failure)
http/wpt/mediarecorder/mute-tracks.html [ Pass Failure ]
# webkit.org/b/238774 [ iOS ] http/wpt/mediarecorder/mute-tracks.html is a flaky crash
http/wpt/mediarecorder/mute-tracks.html [ Pass Failure Crash ]

# rdar://80396502 ([ iOS15 ] http/wpt/mediarecorder/pause-recording.html is a flaky crash)
http/wpt/mediarecorder/pause-recording.html [ Pass Crash ]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1361,6 +1361,8 @@ void getSupportedTypes(HashSet<String>& types) const final
[m_synchronizer removeRenderer:audioRenderer atTime:currentTime completionHandler:nil];

m_sampleBufferAudioRendererMap.remove(iter);
if (auto player = m_player.get())
player->renderingModeChanged();
}

void MediaPlayerPrivateMediaSourceAVFObjC::removeAudioTrack(AudioTrackPrivate& track)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1562,6 +1562,8 @@ static bool isCopyDisplayedPixelBufferAvailable()
destroyAudioRenderer(renderer);
}
m_audioRenderers.clear();
if (auto player = m_player.get())
player->renderingModeChanged();
}

void MediaPlayerPrivateWebM::clearTracks()
Expand Down
26 changes: 19 additions & 7 deletions Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ MediaPlayerPrivateRemote::MediaPlayerPrivateRemote(MediaPlayer* player, MediaPla
, m_documentSecurityOrigin(player->documentSecurityOrigin())
{
ALWAYS_LOG(LOGIDENTIFIER);

acceleratedRenderingStateChanged();
}

MediaPlayerPrivateRemote::~MediaPlayerPrivateRemote()
Expand Down Expand Up @@ -343,8 +345,10 @@ void MediaPlayerPrivateRemote::readyStateChanged(RemoteMediaPlayerState&& state)
{
ALWAYS_LOG(LOGIDENTIFIER, state.readyState);
updateCachedState(WTFMove(state));
if (auto player = m_player.get())
if (auto player = m_player.get()) {
player->readyStateChanged();
checkAcceleratedRenderingState();
}
}

void MediaPlayerPrivateRemote::volumeChanged(double volume)
Expand Down Expand Up @@ -487,17 +491,26 @@ bool MediaPlayerPrivateRemote::supportsAcceleratedRendering() const
void MediaPlayerPrivateRemote::acceleratedRenderingStateChanged()
{
if (auto player = m_player.get()) {
connection().send(Messages::RemoteMediaPlayerProxy::AcceleratedRenderingStateChanged(player->renderingCanBeAccelerated()), m_id);
m_renderingCanBeAccelerated = player->renderingCanBeAccelerated();
connection().send(Messages::RemoteMediaPlayerProxy::AcceleratedRenderingStateChanged(m_renderingCanBeAccelerated), m_id);
}
renderingModeChanged();
}

void MediaPlayerPrivateRemote::checkAcceleratedRenderingState()
{
if (auto player = m_player.get()) {
bool renderingCanBeAccelerated = player->renderingCanBeAccelerated();
if (m_renderingCanBeAccelerated != renderingCanBeAccelerated)
acceleratedRenderingStateChanged();
}
}

void MediaPlayerPrivateRemote::updateConfiguration(RemoteMediaPlayerConfiguration&& configuration)
{
bool oldSupportsAcceleraterRendering = supportsAcceleratedRendering();
m_configuration = WTFMove(configuration);
// player->renderingCanBeAccelerated() result is dependent on m_configuration.supportsAcceleratedRendering value.
if (RefPtr player = m_player.get(); player && oldSupportsAcceleraterRendering != supportsAcceleratedRendering())
player->renderingModeChanged();
checkAcceleratedRenderingState();
}

#if ENABLE(WIRELESS_PLAYBACK_TARGET)
Expand Down Expand Up @@ -873,8 +886,7 @@ void MediaPlayerPrivateRemote::setVideoFullscreenLayer(PlatformLayer* videoFulls
m_videoLayerManager->setVideoFullscreenLayer(videoFullscreenLayer, WTFMove(completionHandler), nullptr);
#endif
// A Fullscreen layer has been set, this could update the value returned by player->renderingCanBeAccelerated().
if (RefPtr player = m_player.get())
player->renderingModeChanged();
checkAcceleratedRenderingState();
}

void MediaPlayerPrivateRemote::updateVideoFullscreenInlineImage()
Expand Down
2 changes: 2 additions & 0 deletions Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,7 @@ class MediaPlayerPrivateRemote final

bool supportsAcceleratedRendering() const final;
void acceleratedRenderingStateChanged() final;
void checkAcceleratedRenderingState();

void setShouldMaintainAspectRatio(bool) final;

Expand Down Expand Up @@ -480,6 +481,7 @@ class MediaPlayerPrivateRemote final
bool m_isCurrentPlaybackTargetWireless { false };
bool m_waitingForKey { false };
bool m_timeIsProgressing { false };
bool m_renderingCanBeAccelerated { false };
std::optional<bool> m_shouldMaintainAspectRatio;
std::optional<bool> m_pageIsVisible;
RefPtr<RemoteVideoFrameProxy> m_videoFrameForCurrentTime;
Expand Down

0 comments on commit a6b5343

Please sign in to comment.