Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ad09364a059eb2fab58744bcba57532e565447c9
      
https://github.com/WebKit/WebKit/commit/ad09364a059eb2fab58744bcba57532e565447c9
  Author: Ryan Fuller <[email protected]>
  Date:   2025-05-29 (Thu, 29 May 2025)

  Changed paths:
    M Source/WebCore/html/HTMLMediaElement.cpp
    M Source/WebCore/html/HTMLMediaElement.h
    M Source/WebCore/html/HTMLVideoElement.cpp
    M Source/WebCore/html/HTMLVideoElement.h
    M Source/WebKit/WebProcess/cocoa/VideoPresentationManager.h
    M Source/WebKit/WebProcess/cocoa/VideoPresentationManager.messages.in
    M Source/WebKit/WebProcess/cocoa/VideoPresentationManager.mm

  Log Message:
  -----------
  [visionOS] MediaPlayer changes while in external playback get stuck in the 
wrong rendering mode.
https://bugs.webkit.org/show_bug.cgi?id=293755
rdar://151717489

Reviewed by Andy Estes.

When an HTMLVideoElement is in external playback (a custom LMK mode) and the 
media
player changes, the new media player does not receive the inFullscreenOrPiP 
state
correctly. Thus, when exiting external playback, the media element short 
circuits
the call to the media player's private interface, which means the rendering 
mode is
not updated from entity to layer based.

The new media player already does get its inFullscreenOrPip value copied over 
from
the fullscreen state of the element, but this does not currently capture whether
the element is in external playback -- which also should be considered to be in
fullscreenOrPip.

To fix, adjust the calculation when creating a new media player to consider 
external
state, which requires creating a variable on HTMLVideoElement to store the 
state.

Also, synchronize some existing external playback code under the 
LINEAR_MEDIA_PLAYER
flag instead of just visionOS, as that is more technically correct as a 
requirement
and should have a consistent guard around all external playback code.

* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::isInFullscreenOrPictureInPicture const):
* Source/WebCore/html/HTMLMediaElement.h:
* Source/WebCore/html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::didEnterExternalPlayback):
(WebCore::HTMLVideoElement::didExitExternalPlayback):
* Source/WebCore/html/HTMLVideoElement.h:
* Source/WebKit/WebProcess/cocoa/VideoPresentationManager.h:
* Source/WebKit/WebProcess/cocoa/VideoPresentationManager.messages.in:
* Source/WebKit/WebProcess/cocoa/VideoPresentationManager.mm:

Canonical link: https://commits.webkit.org/295573@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

Reply via email to