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

Reply via email to