Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a517dfc6d1cbd03b09f5736cf4b1bf62f8e5ea88
https://github.com/WebKit/WebKit/commit/a517dfc6d1cbd03b09f5736cf4b1bf62f8e5ea88
Author: Andy Estes <[email protected]>
Date: 2023-08-28 (Mon, 28 Aug 2023)
Changed paths:
M Source/WebCore/html/HTMLMediaElement.h
M Source/WebCore/platform/graphics/MediaPlayer.cpp
M Source/WebCore/platform/graphics/MediaPlayer.h
M
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
M
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm
M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp
M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h
M Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm
Log Message:
-----------
REGRESSION(264795@main): Some HLS videos have a frame half as wide as it
should be
https://bugs.webkit.org/show_bug.cgi?id=260825
rdar://110467872
Reviewed by Jer Noble.
In 264795@main, the source of truth for videoLayerSize was moved from
MediaPlayerPrivate to
HTMLMediaElement, but a cached value remained on MediaPlayerPrivateRemote (in
m_videoLayerSize).
When the GPU process would send the LayerHostingContextIdChanged message to the
WebContent process
with a new presentation size, MediaPlayerPrivateRemote's cached value would be
updated but
HTMLMediaElement's would not. This could ultimately lead to WebAVPlayerLayer
laying out with a size
that didn't match the presentation size of the styled video element.
Fixed this by removing m_videoLayerSize from MediaPlayerPrivateRemote and
delegating to
HTMLMediaElement when setting the presentation size specified in the
LayerHostingContextIdChanged
message.
No new tests as reproducing this requires content that isn't licenced for
inclusion in WebKit.
* Source/WebCore/html/HTMLMediaElement.h:
* Source/WebCore/platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::videoLayerSizeDidChange):
* Source/WebCore/platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerVideoLayerSizeDidChange):
*
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer):
*
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer):
* Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::platformLayer const):
(WebKit::MediaPlayerPrivateRemote::setVideoLayerSizeFenced): Deleted.
* Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
* Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:
(WebKit::MediaPlayerPrivateRemote::layerHostingContextIdChanged):
(WebKit::MediaPlayerPrivateRemote::videoLayerSize const):
(WebKit::MediaPlayerPrivateRemote::setVideoLayerSizeFenced):
Canonical link: https://commits.webkit.org/267389@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes