Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4beae41dc6154ad2687f21a5fd87d09039e0d2af
https://github.com/WebKit/WebKit/commit/4beae41dc6154ad2687f21a5fd87d09039e0d2af
Author: Matt Woodrow <[email protected]>
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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes