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

Reply via email to