Title: [288877] trunk/Source/WebKit
- Revision
- 288877
- Author
- simon.fra...@apple.com
- Date
- 2022-02-01 08:11:32 -0800 (Tue, 01 Feb 2022)
Log Message
RemoteRenderingBackendProxy should not be a IPC::MessageSender
https://bugs.webkit.org/show_bug.cgi?id=235935
Reviewed by Wenson Hsieh.
Calling send() in RemoteRenderingBackendProxy fails to send a message to the GPU process,
because it has no connection(), only a StreamClientConnection or the GPUProcessConnection.
So make it not inherit from IPC::MessageSender. Code using send() now explicitly uses
ensureGPUProcessConnection().connection().
(WebKit::RemoteLayerBackingStore::setBufferVolatility):
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::~RemoteRenderingBackendProxy):
(WebKit::RemoteRenderingBackendProxy::gpuProcessConnection):
(WebKit::RemoteRenderingBackendProxy::waitForDidCreateImageBufferBackend):
(WebKit::RemoteRenderingBackendProxy::waitForDidFlush):
(WebKit::RemoteRenderingBackendProxy::streamConnection):
(WebKit::RemoteRenderingBackendProxy::messageSenderConnection const): Deleted.
(WebKit::RemoteRenderingBackendProxy::messageSenderDestinationID const): Deleted.
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (288876 => 288877)
--- trunk/Source/WebKit/ChangeLog 2022-02-01 15:51:40 UTC (rev 288876)
+++ trunk/Source/WebKit/ChangeLog 2022-02-01 16:11:32 UTC (rev 288877)
@@ -1,3 +1,27 @@
+2022-02-01 Simon Fraser <simon.fra...@apple.com>
+
+ RemoteRenderingBackendProxy should not be a IPC::MessageSender
+ https://bugs.webkit.org/show_bug.cgi?id=235935
+
+ Reviewed by Wenson Hsieh.
+
+ Calling send() in RemoteRenderingBackendProxy fails to send a message to the GPU process,
+ because it has no connection(), only a StreamClientConnection or the GPUProcessConnection.
+
+ So make it not inherit from IPC::MessageSender. Code using send() now explicitly uses
+ ensureGPUProcessConnection().connection().
+
+ (WebKit::RemoteLayerBackingStore::setBufferVolatility):
+ * WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
+ (WebKit::RemoteRenderingBackendProxy::~RemoteRenderingBackendProxy):
+ (WebKit::RemoteRenderingBackendProxy::gpuProcessConnection):
+ (WebKit::RemoteRenderingBackendProxy::waitForDidCreateImageBufferBackend):
+ (WebKit::RemoteRenderingBackendProxy::waitForDidFlush):
+ (WebKit::RemoteRenderingBackendProxy::streamConnection):
+ (WebKit::RemoteRenderingBackendProxy::messageSenderConnection const): Deleted.
+ (WebKit::RemoteRenderingBackendProxy::messageSenderDestinationID const): Deleted.
+ * WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
+
2022-01-31 Myles C. Maxfield <mmaxfi...@apple.com>
Rename FontCascade::fontMetrics() and RenderStyle::fontMetrics() to fontMetricsOfPrimaryFont()
Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp (288876 => 288877)
--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp 2022-02-01 15:51:40 UTC (rev 288876)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp 2022-02-01 16:11:32 UTC (rev 288877)
@@ -66,7 +66,7 @@
m_gpuProcessConnection->messageReceiverMap().removeMessageReceiver(*this);
// Release the RemoteRenderingBackend.
- send(Messages::GPUConnectionToWebProcess::ReleaseRenderingBackend(renderingBackendIdentifier()), 0, IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply);
+ m_gpuProcessConnection->connection().send(Messages::GPUConnectionToWebProcess::ReleaseRenderingBackend(renderingBackendIdentifier()), 0, IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply);
}
GPUProcessConnection& RemoteRenderingBackendProxy::ensureGPUProcessConnection()
@@ -83,6 +83,11 @@
return *m_gpuProcessConnection;
}
+IPC::Connection& RemoteRenderingBackendProxy::gpuProcessConnection()
+{
+ return ensureGPUProcessConnection().connection();
+}
+
void RemoteRenderingBackendProxy::gpuProcessConnectionDidClose(GPUProcessConnection& previousConnection)
{
previousConnection.removeClient(*this);
@@ -101,20 +106,9 @@
m_didRenderingUpdateID = { };
}
-IPC::Connection* RemoteRenderingBackendProxy::messageSenderConnection() const
-{
- return &const_cast<RemoteRenderingBackendProxy&>(*this).ensureGPUProcessConnection().connection();
-}
-
-uint64_t RemoteRenderingBackendProxy::messageSenderDestinationID() const
-{
- return renderingBackendIdentifier().toUInt64();
-}
-
RemoteRenderingBackendProxy::DidReceiveBackendCreationResult RemoteRenderingBackendProxy::waitForDidCreateImageBufferBackend()
{
- RefPtr connection = messageSenderConnection();
- if (!connection->waitForAndDispatchImmediately<Messages::RemoteRenderingBackendProxy::DidCreateImageBufferBackend>(renderingBackendIdentifier(), 1_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives))
+ if (!gpuProcessConnection().waitForAndDispatchImmediately<Messages::RemoteRenderingBackendProxy::DidCreateImageBufferBackend>(renderingBackendIdentifier(), 1_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives))
return DidReceiveBackendCreationResult::TimeoutOrIPCFailure;
return DidReceiveBackendCreationResult::ReceivedAnyResponse;
}
@@ -121,8 +115,7 @@
bool RemoteRenderingBackendProxy::waitForDidFlush()
{
- RefPtr connection = messageSenderConnection();
- return connection->waitForAndDispatchImmediately<Messages::RemoteRenderingBackendProxy::DidFlush>(renderingBackendIdentifier(), 1_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives);
+ return gpuProcessConnection().waitForAndDispatchImmediately<Messages::RemoteRenderingBackendProxy::DidFlush>(renderingBackendIdentifier(), 1_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives);
}
void RemoteRenderingBackendProxy::createRemoteImageBuffer(ImageBuffer& imageBuffer)
@@ -311,7 +304,7 @@
{
ensureGPUProcessConnection();
if (UNLIKELY(m_needsWakeUpSemaphoreForDisplayListStream))
- messageSenderConnection()->waitForAndDispatchImmediately<Messages::RemoteRenderingBackendProxy::DidCreateWakeUpSemaphoreForDisplayListStream>(renderingBackendIdentifier(), 3_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives);
+ gpuProcessConnection().waitForAndDispatchImmediately<Messages::RemoteRenderingBackendProxy::DidCreateWakeUpSemaphoreForDisplayListStream>(renderingBackendIdentifier(), 3_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives);
return *m_streamConnection;
}
Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h (288876 => 288877)
--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h 2022-02-01 15:51:40 UTC (rev 288876)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h 2022-02-01 16:11:32 UTC (rev 288877)
@@ -61,8 +61,7 @@
class WebPage;
class RemoteRenderingBackendProxy
- : public IPC::MessageSender
- , private IPC::MessageReceiver
+ : private IPC::MessageReceiver
, public GPUProcessConnection::Client {
public:
static std::unique_ptr<RemoteRenderingBackendProxy> create(WebPage&);
@@ -80,10 +79,6 @@
void createRemoteImageBuffer(WebCore::ImageBuffer&);
bool isCached(const WebCore::ImageBuffer&) const;
-
- // IPC::MessageSender.
- IPC::Connection* messageSenderConnection() const override;
- uint64_t messageSenderDestinationID() const override;
// IPC::MessageReceiver
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
@@ -146,6 +141,7 @@
void gpuProcessConnectionDidClose(GPUProcessConnection&) final;
GPUProcessConnection& ensureGPUProcessConnection();
+ IPC::Connection& gpuProcessConnection();
// Messages to be received.
void didCreateImageBufferBackend(ImageBufferBackendHandle, WebCore::RenderingResourceIdentifier);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes