Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 57afaa96431ba8b77fe6e00b1158c5233838e665
      
https://github.com/WebKit/WebKit/commit/57afaa96431ba8b77fe6e00b1158c5233838e665
  Author: Youenn Fablet <[email protected]>
  Date:   2023-11-10 (Fri, 10 Nov 2023)

  Changed paths:
    M 
Source/WebCore/platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm
    M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp
    M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h
    M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.messages.in
    M Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h
    M Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.messages.in
    M Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.cpp
    M Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h
    M Source/WebKit/WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp

  Log Message:
  -----------
  REGRESSION (iOS 17 Beta): The camera preview is with a wrong resolution for a 
short time when the iOS User enables/disables the camera
https://bugs.webkit.org/show_bug.cgi?id=259364
rdar://112621697

Reviewed by Jer Noble.

The fencing mechanism to synchronize UIProcess and GPUProcess layering works 
properly only on main thread.
We therefore need to process the WebProcess to GPUProcess message in main 
thread and not in a queue.
We thus introduce a new GPUConnectionToWebProcess message that will be 
processed in main thread.
We then get the SampleBufferDisplayLayer (via a lock) to call 
updateSampleLayerBoundsAndPosition which synchronously updates the bounds.

* 
Source/WebCore/platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:
(WebCore::LocalSampleBufferDisplayLayer::updateSampleLayerBoundsAndPosition):
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::updateSampleBufferDisplayLayerBoundsAndPosition):
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.messages.in:
* Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h:
* Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.messages.in:
* Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.cpp:
(WebKit::RemoteSampleBufferDisplayLayerManager::close):
(WebKit::RemoteSampleBufferDisplayLayerManager::dispatchMessage):
(WebKit::RemoteSampleBufferDisplayLayerManager::createLayer):
(WebKit::RemoteSampleBufferDisplayLayerManager::releaseLayer):
(WebKit::RemoteSampleBufferDisplayLayerManager::allowsExitUnderMemoryPressure 
const):
(WebKit::RemoteSampleBufferDisplayLayerManager::updateSampleBufferDisplayLayerBoundsAndPosition):
* Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h:
* Source/WebKit/WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp:
(WebKit::SampleBufferDisplayLayer::updateBoundsAndPosition):

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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to