[webkit-changes] [WebKit/WebKit] 81ef42: [visionOS] YouTube.com: leaving docked mode after ...
Jer Noble
noreply at github.com
Mon Feb 10 09:35:16 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 81ef4249c852641b68977525653f409b52fec5b5
https://github.com/WebKit/WebKit/commit/81ef4249c852641b68977525653f409b52fec5b5
Author: Jer Noble <jer.noble at apple.com>
Date: 2025-02-10 (Mon, 10 Feb 2025)
Changed paths:
M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm
M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm
M Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp
M Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h
M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp
M Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerManagerProxyCocoa.mm
Log Message:
-----------
[visionOS] YouTube.com: leaving docked mode after an ad results in black video inline
rdar://133617493
https://bugs.webkit.org/show_bug.cgi?id=287298
Reviewed by Eric Carlson.
Two problems combined to cause the user visible behavior in this report:
1) When moving a PlatformVideoTarget between two MediaPlayers, the original holder of
the PlatformVideoTarget does not have it's video target cleared, and the new holder of
the PlatformVideoTarget is not added to the "cached holder of the video target". This
means when the PlatformVideoTarget is torn down, we tell the wrong MediaPlayer to clear
its copy of the video target.
2) When we pass a valid video target to MediaPlayerPrivateMediaSourceAVFObjC, a bool
ivar is set that is never cleared when that video target is subsequently cleared. This
causes us to never re-create a layer backing for the MediaPlayer.
Drive-by fix: Make RemoteMediaPlayerManagerProxy compatible with LoggerHelper, so that
logs can be added to RemoteMediaPlayerManagerProxyCocoa.mm.
* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoTarget):
* Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm:
(WebCore::MediaPlayerPrivateWebM::setVideoTarget):
* Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
(WebKit::RemoteMediaPlayerManagerProxy::RemoteMediaPlayerManagerProxy):
(WebKit::RemoteMediaPlayerManagerProxy::logChannel const):
(WebKit::RemoteMediaPlayerManagerProxy::logger): Deleted.
* Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
(WebKit::RemoteMediaPlayerManagerProxy::logger):
(WebKit::RemoteMediaPlayerManagerProxy::logClassName const):
(WebKit::RemoteMediaPlayerManagerProxy::logIdentifier const):
* Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::mediaPlayerVideoTarget const):
* Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerManagerProxyCocoa.mm:
(WebKit::RemoteMediaPlayerManagerProxy::takeVideoTargetForMediaElementIdentifier):
(WebKit::RemoteMediaPlayerManagerProxy::handleVideoReceiverEndpointMessage):
(WebKit::RemoteMediaPlayerManagerProxy::videoTargetForMediaElementIdentifier): Deleted.
Canonical link: https://commits.webkit.org/290173@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list