[webkit-changes] [WebKit/WebKit] 57afaa: REGRESSION (iOS 17 Beta): The camera preview is wi...

youennf noreply at github.com
Fri Nov 10 10:30:05 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 57afaa96431ba8b77fe6e00b1158c5233838e665
      https://github.com/WebKit/WebKit/commit/57afaa96431ba8b77fe6e00b1158c5233838e665
  Author: Youenn Fablet <youennf at gmail.com>
  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




More information about the webkit-changes mailing list