Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 81ef4249c852641b68977525653f409b52fec5b5
      
https://github.com/WebKit/WebKit/commit/81ef4249c852641b68977525653f409b52fec5b5
  Author: Jer Noble <jer.no...@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
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to