[webkit-changes] [WebKit/WebKit] 4beae4: RemoteImageBufferSetProxy::didPrepareForDisplay ca...
mattwoodrow
noreply at github.com
Sat Feb 3 10:39:32 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4beae41dc6154ad2687f21a5fd87d09039e0d2af
https://github.com/WebKit/WebKit/commit/4beae41dc6154ad2687f21a5fd87d09039e0d2af
Author: Matt Woodrow <mattwoodrow at apple.com>
Date: 2024-02-03 (Sat, 03 Feb 2024)
Changed paths:
M Source/WebKit/Platform/IPC/StreamClientConnection.cpp
M Source/WebKit/Platform/IPC/StreamClientConnection.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.messages.in
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
Log Message:
-----------
RemoteImageBufferSetProxy::didPrepareForDisplay can be blocked by other main thread task.
https://bugs.webkit.org/show_bug.cgi?id=268506
<rdar://121664924>
Reviewed by Kimmo Kinnunen.
This message is received on the main thread, and blocks submission of the previous layer tree transaction.
It can be delayed by other work on the main thread, for arbitrary periods of time.
This changes makes it be delivered it to a WorkQueue instead to prevent this blocking.
* Source/WebKit/Platform/IPC/StreamClientConnection.cpp:
(IPC::StreamClientConnection::addWorkQueueMessageReceiver):
(IPC::StreamClientConnection::removeWorkQueueMessageReceiver):
* Source/WebKit/Platform/IPC/StreamClientConnection.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm:
(WebKit::RemoteLayerWithRemoteRenderingBackingStore::~RemoteLayerWithRemoteRenderingBackingStore):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp:
(WebKit::RemoteImageBufferSetProxyFlushFence::create):
(WebKit::RemoteImageBufferSetProxyFlushFence::~RemoteImageBufferSetProxyFlushFence):
(WebKit::RemoteImageBufferSetProxyFlushFence::waitFor):
(WebKit::RemoteImageBufferSetProxyFlushFence::tryTakeEvent):
(WebKit::RemoteImageBufferSetProxyFlushFence::setWaitingForSignal):
(WebKit::RemoteImageBufferSetProxy::didPrepareForDisplay):
(WebKit::RemoteImageBufferSetProxy::shutdown):
(WebKit::RemoteImageBufferSetProxy::doShutdown):
(WebKit::RemoteImageBufferSetProxy::createFlushFence):
(WebKit::RemoteImageBufferSetProxy::flushFrontBufferAsync):
(WebKit::RemoteImageBufferSetProxy::willPrepareForDisplay):
(WebKit::RemoteImageBufferSetProxy::remoteBufferSetWasDestroyed):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h:
(WebKit::RemoteImageBufferSetProxy::WTF_GUARDED_BY_LOCK):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.messages.in:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy):
(WebKit::RemoteRenderingBackendProxy::didClose):
(WebKit::RemoteRenderingBackendProxy::prepareImageBufferSetsForDisplay):
(WebKit::RemoteRenderingBackendProxy::dispatchMessage):
(WebKit::RemoteRenderingBackendProxy::didPrepareForDisplay): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
(WebKit::RemoteRenderingBackendProxy::workQueue):
Canonical link: https://commits.webkit.org/274047@main
More information about the webkit-changes
mailing list