Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 00b7ba0d3ee7641375c85bb15dd0d4f83af2cba0 https://github.com/WebKit/WebKit/commit/00b7ba0d3ee7641375c85bb15dd0d4f83af2cba0 Author: Andy Estes <aes...@apple.com> 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 webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes