Title: [292319] trunk/Source/WebKit
Revision
292319
Author
hey...@apple.com
Date
2022-04-04 14:38:05 -0700 (Mon, 04 Apr 2022)

Log Message

Remove display list map entry before remote resource
https://bugs.webkit.org/show_bug.cgi?id=238764

Reviewed by Simon Fraser.

* GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::clearImageBufferReference):
* GPUProcess/graphics/RemoteDisplayListRecorder.h:
* GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::releaseRemoteResourceWithQualifiedIdentifier):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (292318 => 292319)


--- trunk/Source/WebKit/ChangeLog	2022-04-04 21:30:31 UTC (rev 292318)
+++ trunk/Source/WebKit/ChangeLog	2022-04-04 21:38:05 UTC (rev 292319)
@@ -1,3 +1,16 @@
+2022-04-04  Cameron McCormack  <hey...@apple.com>
+
+        Remove display list map entry before remote resource
+        https://bugs.webkit.org/show_bug.cgi?id=238764
+
+        Reviewed by Simon Fraser.
+
+        * GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
+        (WebKit::RemoteDisplayListRecorder::clearImageBufferReference):
+        * GPUProcess/graphics/RemoteDisplayListRecorder.h:
+        * GPUProcess/graphics/RemoteRenderingBackend.cpp:
+        (WebKit::RemoteRenderingBackend::releaseRemoteResourceWithQualifiedIdentifier):
+
 2022-04-04  Wenson Hsieh  <wenson_hs...@apple.com>
 
         [macOS] Add helper methods to install and uninstall VKCImageAnalysisOverlayView

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp (292318 => 292319)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp	2022-04-04 21:30:31 UTC (rev 292318)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp	2022-04-04 21:38:05 UTC (rev 292319)
@@ -68,6 +68,11 @@
         renderingBackend->streamConnection().stopReceivingMessages(Messages::RemoteDisplayListRecorder::messageReceiverName(), m_imageBufferIdentifier.object().toUInt64());
 }
 
+void RemoteDisplayListRecorder::clearImageBufferReference()
+{
+    m_imageBuffer.clear();
+}
+
 void RemoteDisplayListRecorder::save()
 {
     handleItem(DisplayList::Save());

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h (292318 => 292319)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h	2022-04-04 21:30:31 UTC (rev 292318)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h	2022-04-04 21:38:05 UTC (rev 292319)
@@ -56,6 +56,7 @@
     }
 
     void stopListeningForIPC();
+    void clearImageBufferReference();
 
     void save();
     void restore();

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp (292318 => 292319)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2022-04-04 21:30:31 UTC (rev 292318)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2022-04-04 21:38:05 UTC (rev 292319)
@@ -383,12 +383,14 @@
 void RemoteRenderingBackend::releaseRemoteResourceWithQualifiedIdentifier(QualifiedRenderingResourceIdentifier renderingResourceIdentifier)
 {
     ASSERT(!RunLoop::isMain());
+    {
+        Locker locker { m_remoteDisplayListsLock };
+        if (auto remoteDisplayList = m_remoteDisplayLists.take(renderingResourceIdentifier))
+            remoteDisplayList->clearImageBufferReference();
+    }
     auto success = m_remoteResourceCache.releaseRemoteResource(renderingResourceIdentifier);
     MESSAGE_CHECK(success, "Resource is being released before being cached.");
     updateRenderingResourceRequest();
-
-    Locker locker { m_remoteDisplayListsLock };
-    m_remoteDisplayLists.remove(renderingResourceIdentifier);
 }
 
 static std::optional<ImageBufferBackendHandle> handleFromBuffer(WebCore::ImageBuffer& buffer)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to