Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d5fddb160c2739f7d90e5a4b9b5ed1d6e30d69eb https://github.com/WebKit/WebKit/commit/d5fddb160c2739f7d90e5a4b9b5ed1d6e30d69eb Author: Andy Estes <aes...@apple.com> Date: 2024-07-11 (Thu, 11 Jul 2024)
Changed paths: M Source/WebCore/platform/graphics/MediaPlayerEnums.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm Log Message: ----------- [LinearMediaPlayer] Blank video frames seen before docking and after undocking https://bugs.webkit.org/show_bug.cgi?id=276453 rdar://130425275 Reviewed by Jer Noble. Two issues resulted in blank frames briefly appearing in an <video> element in element fullscreen: 1. Just prior to docking, an LMPlayableViewController is presented that obscures the web view. Since this VC's presentationMode is immediately changed to `.fullscreenFromInline` which hides the web view's scene and presents a new fullscreen scene, we should hide the view controller while it's in `.inline` mode (by setting its root view's alpha to 0). 2. Right after undocking, when committing the staged AVSampleBufferDisplayLayer, MediaPlayerPrivate would call renderingModeChanged(), which calls Element::invalidateStyleAndLayerComposition(). This results in the <video> element briefly rendering a black frame. To avoid this, changed MediaPlayerPrivate to call renderingModeChanged() as soon as the AVSampleBufferDisplayLayer is staged, while the LinearMediaKit scene is still occluding the web view. * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/platform/graphics/MediaPlayerEnums.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateDisplayLayerAndDecompressionSession): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::destroyDecompressionSession): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayerOrVideoRenderer): * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h: * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm: (WebCore::MediaPlayerPrivateWebM::updateDisplayLayerAndDecompressionSession): (WebCore::MediaPlayerPrivateWebM::destroyDecompressionSession): (WebCore::MediaPlayerPrivateWebM::ensureLayerOrVideoRenderer): * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: (WebKit::VideoPresentationInterfaceLMK::ensurePlayableViewController): Canonical link: https://commits.webkit.org/280848@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