Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 36918915823b165e1b4b12026347c4397628e78f
      
https://github.com/WebKit/WebKit/commit/36918915823b165e1b4b12026347c4397628e78f
  Author: Kimmo Kinnunen <[email protected]>
  Date:   2023-05-12 (Fri, 12 May 2023)

  Changed paths:
    M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h
    M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h
    M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.h
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h

  Log Message:
  -----------
  RemoteDisplayListRecorder is unsubscribed from the IPC twice
https://bugs.webkit.org/show_bug.cgi?id=256633
rdar://109196807

Reviewed by Matt Woodrow.

RemoteDisplayListRecorder was referenced twice:
- From a map in RemoteRenderingBackend
- From RemoteImageBuffer
Since the reference was made through ScopedActiveMessageReceiveQueue,
stopListeningForIPC() was called twice.

RemoteDisplayListRecorder is the client that uses ImageBuffer, e.g.
the party that does buffer.context().drawImage(...). It does not
make sense that the client is held inside the very buffer the client
uses.

Instead, hold the RemoteDisplayListRecorder in a map in
RemoteRenderingBackend, similar to any other instance that is created
in GPUP.

Simplify the invocation of didCreateImageBufferBackend. It was
called from the RemoteImageBuffer constructing functions, which
is overly complex. The invocation is linear from RemoteRenderingBackend,
and the logic is internal logic of RemoteRenderingBackend. Thus just
invoke the logic from RemoteRenderingBackend directly.

* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::clearImageBufferReference): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
* Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.cpp:
(WebKit::RemoteImageBuffer::RemoteImageBuffer):
(WebKit::RemoteImageBuffer::createTransfer):
(WebKit::m_renderingResourcesRequest): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.h:
(WebKit::RemoteImageBuffer::create):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::startListeningForIPC):
(WebKit::RemoteRenderingBackend::stopListeningForIPC):
(WebKit::RemoteRenderingBackend::workQueueInitialize):
(WebKit::RemoteRenderingBackend::workQueueUninitialize):
(WebKit::RemoteRenderingBackend::dispatch):
(WebKit::RemoteRenderingBackend::didCreateImageBuffer):
(WebKit::RemoteRenderingBackend::moveToSerializedBuffer):
(WebKit::RemoteRenderingBackend::moveToImageBuffer):
(WebKit::RemoteRenderingBackend::createImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::releaseRenderingResourceWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::didCreateImageBufferBackend): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
(WebKit::RemoteRenderingBackend::workQueue const):
(WebKit::RemoteRenderingBackend::WTF_GUARDED_BY_LOCK): Deleted.

Canonical link: https://commits.webkit.org/264007@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to