Branch: refs/heads/safari-7615.1.11-branch
  Home:   https://github.com/WebKit/WebKit
  Commit: a4b9a73a924d2146ee38692c5c7e063d3e20d9a4
      
https://github.com/WebKit/WebKit/commit/a4b9a73a924d2146ee38692c5c7e063d3e20d9a4
  Author: Jer Noble <jer.no...@apple.com>
  Date:   2022-10-27 (Thu, 27 Oct 2022)

  Changed paths:
    M 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h
    M 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm
    M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h
    M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in
    M Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm
    M Source/WebKit/GPUProcess/media/win/RemoteMediaPlayerProxyWin.cpp
    M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp
    M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h
    M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in
    M Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm
    M Source/WebKit/WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.mm

  Log Message:
  -----------
  Cherry-pick 05fcfed179c8. rdar://problem/101520126

    (REGRESSION:255635@main) No video in Netflix hover previews
    https://bugs.webkit.org/show_bug.cgi?id=247021
    rdar://101520126

    Reviewed by Eric Carlson.

    In 255635@main, we changed MediaPlayer::setPresentationSize() to only 
notify the MediaPlayerPrivate
    if the size had actually changed. Unfortunately, this caused 
MediaPlayerPrivateMediaSourceAVFObjC to
    fail to create its platform layer, as it depended on setPresentationSize() 
being called often to trigger
    re-querying whether said layer should be created.

    Rather than depend upon timing- and order-specific messages from the 
MediaPlayer, explicitly re-query
    by implementing playerContentBoxRectChanged(); as playerContentBoxRect() is 
used inside that query.

    However, this still leaves some potential resizing glitches when media data 
is loaded sufficiently
    quickly. Depending on timing, there may be multiple 
VideoInlineSizeChanged() messages sent from the
    GPU process in the midst of an attepmted resize operation. So rather than 
relying on asynchronous
    VideoInlineSizeChanged() messages to set the initial videoLayerFrame value, 
rely on the
    PrepareForPlayback() message to set the initial presentationSize correctly, 
as the hosting layer
    won't be created until the completion handler for that method.

    Finally, during some extreme resize operations (such as occurs when loading 
a media document, where
    the initial layout of the media element could be only a few pixels tall, 
and hundreds wide), a naive
    scale from the initial video frame to the desired video frame will cause a 
graphical glitch. Instead,
    take the aspect ratio of the underlying media into account when deriving 
the transform.

    Canonical link: https://commits.webkit.org/256069@main

Canonical link: https://commits.webkit.org/255891.2@safari-7615.1.11-branch


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to