Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 00b7ba0d3ee7641375c85bb15dd0d4f83af2cba0
https://github.com/WebKit/WebKit/commit/00b7ba0d3ee7641375c85bb15dd0d4f83af2cba0
Author: Andy Estes <[email protected]>
Date: 2024-04-11 (Thu, 11 Apr 2024)
Changed paths:
M Source/WebKit/Configurations/WebKitSwift.xcconfig
M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm
M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm
M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm
M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift
M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift
M Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h
Log Message:
-----------
[visionOS] VideoPresentationInterfaceLMK should wait for LinearMeditKit scene
swap before calling present/dismiss fullscreen completion handlers
https://bugs.webkit.org/show_bug.cgi?id=272547
rdar://126296224
Reviewed by Jer Noble.
Previously, VideoPresentationInterfaceLMK would call the completion handlers
passed to
presentFullscreen() and dismissFullscreen() immediately, resulting in WebKit
believing it was
(or was not) in fullscreen presentation mode prior to the fullscreen scene swap
actually occurring.
This prevents us from addressing several polish items with the current
fullscreen transition, such
as deferring AVSampleBufferDisplayLayer and element fullscreen teardown until
the WKWebView is no
longer visible.
Addressed this by teaching LinearMediaPlayer to store the callbacks passed to
VideoPresentationInterfaceLMK, calling them when LinearMediaKit calls
didCompleteEnterFullscreen and
didCompleteExitFullscreen.
While here, to aid future debugging, added extra logging and disabled Swift
optimizations in
libWebKitSwift when building the Debug configuration.
* Source/WebKit/Configurations/WebKitSwift.xcconfig:
* Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm:
(WebKit::VideoPresentationInterfaceLMK::presentFullscreen):
(WebKit::VideoPresentationInterfaceLMK::dismissFullscreen):
* Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
(WebKit::PlaybackSessionModelContext::setVideoReceiverEndpoint):
* Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm:
* Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift:
(WKSLinearMediaPlayer.enterFullscreenCompletionHandler):
(WKSLinearMediaPlayer.exitFullscreenCompletionHandler):
(WKSLinearMediaPlayer.enterFullscreen(_:(any Error)?) -> Void:)):
(WKSLinearMediaPlayer.exitFullscreen(_:(any Error)?) -> Void:)):
(WKSLinearMediaPlayer.presentationStateChanged(_:)):
(WKSLinearMediaPlayer.toggleInlineMode):
(WKSLinearMediaPlayer.willEnterFullscreen):
(WKSLinearMediaPlayer.didCompleteEnterFullscreen(_:any:)):
(WKSLinearMediaPlayer.willExitFullscreen):
(WKSLinearMediaPlayer.didCompleteExitFullscreen(_:any:)):
(WKSLinearMediaPlayer.makeDefaultEntity):
(WKSLinearMediaPlayer.setVideoReceiverEndpoint(_:)):
(WKSLinearMediaPlayer.enterFullscreen): Deleted.
(WKSLinearMediaPlayer.exitFullscreen): Deleted.
(WKSLinearMediaPlayer.didCompleteEnterFullscreen(_:Error:)): Deleted.
(WKSLinearMediaPlayer.didCompleteExitFullscreen(_:Error:)): Deleted.
* Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift:
(WKSLinearMediaPresentationState.description):
* Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h:
Canonical link: https://commits.webkit.org/277410@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes