[webkit-changes] [WebKit/WebKit] cb9e03: Various ThreadSafeRefCountedAndCanMakeThreadSafeWe...
Keith Miller
noreply at github.com
Tue Dec 3 15:37:58 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: cb9e03866203faa7c3a986f3bbd561661cca913f
https://github.com/WebKit/WebKit/commit/cb9e03866203faa7c3a986f3bbd561661cca913f
Author: Keith Miller <keith_miller at apple.com>
Date: 2024-12-03 (Tue, 03 Dec 2024)
Changed paths:
M Source/WTF/WTF.xcodeproj/project.pbxproj
A Source/WTF/wtf/AbstractThreadSafeRefCountedAndCanMakeWeakPtr.h
M Source/WTF/wtf/CMakeLists.txt
M Source/WTF/wtf/ThreadSafeWeakHashSet.h
M Source/WTF/wtf/ThreadSafeWeakPtr.h
M Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h
M Source/WebCore/Modules/mediastream/VideoTrackGenerator.h
M Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h
M Source/WebCore/platform/graphics/ImageBuffer.cpp
M Source/WebCore/platform/mediastream/RealtimeIncomingAudioSource.h
M Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.h
M Source/WebCore/platform/mediastream/RealtimeMediaSource.h
M Source/WebCore/platform/mediastream/RealtimeVideoCaptureSource.cpp
M Source/WebCore/platform/mediastream/RealtimeVideoCaptureSource.h
M Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h
M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h
M Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.h
M Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h
M Source/WebCore/platform/mock/MockRealtimeAudioSource.h
M Source/WebCore/platform/xr/PlatformXR.h
M Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h
M Source/WebKit/WebProcess/GPU/GPUProcessConnection.h
M Source/WebKit/WebProcess/GPU/graphics/wc/RemoteWCLayerTreeHostProxy.h
M Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.h
M Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.h
M Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h
M Source/WebKit/WebProcess/GPU/media/RemoteImageDecoderAVFManager.h
M Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.h
M Source/WebKit/WebProcess/GPU/media/RemoteRemoteCommandListener.h
M Source/WebKit/WebProcess/GPU/media/ios/RemoteMediaSessionHelper.h
M Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h
M Source/WebKit/WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.h
M Source/WebKit/WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h
M Source/WebKit/WebProcess/Model/ModelProcessConnection.h
M Source/WebKit/WebProcess/Model/ModelProcessModelPlayerManager.h
M Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.h
M Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp
Log Message:
-----------
Various ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr cleanups
https://bugs.webkit.org/show_bug.cgi?id=283588
rdar://140325747
Reviewed by Alex Christensen.
This patch clears up some parts of how ThreadSafeRefCountedAndCanMakeWeakPtr work.
In particular, now that we no longer permit creating a WeakRef during the destructor
of an object we don't need to use a HashMap in ThreadSafeWeakHashSet and can just use
a std::pair, which simplifies the logic. I also added an optimization to not check the
set if there's no weakRefCount when removing/contains checking. This also prevents
allocating a ControlBlock for an object that can't be in the table anyway.
I was originally thinking we could just remove this second pointer but due to
multiple inheritance it's actually necessary. I added some comments to clarify this.
I also added some logic to remove an entry if it's stale when calling
`ThreadSafeWeakHashSet::contains()` as well as some other places we could
opportunistically clear dead entries.
* Source/WTF/WTF.xcodeproj/project.pbxproj:
* Source/WTF/wtf/AbstractThreadSafeRefCountedAndCanMakeWeakPtr.h: Added.
* Source/WTF/wtf/ThreadSafeWeakHashSet.h:
* Source/WTF/wtf/ThreadSafeWeakPtr.h:
(WTF::ThreadSafeWeakPtrControlBlock::weakRef):
(WTF::ThreadSafeWeakPtrControlBlock::makeStrongReferenceIfPossible const):
(WTF::ThreadSafeWeakPtrControlBlock::weakRefCount const):
(WTF::ThreadSafeWeakPtrControlBlock::refCount const):
(WTF::ThreadSafeWeakPtrControlBlock::hasOneRef const):
(WTF::ThreadSafeWeakPtrControlBlock::ThreadSafeWeakPtrControlBlock):
(WTF::ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr::controlBlock const):
(WTF::ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr::weakRefCount const):
(WTF::ThreadSafeWeakPtrControlBlock::weakReferenceCount const): Deleted.
* Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
* Source/WebCore/Modules/mediastream/VideoTrackGenerator.h:
* Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h:
* Source/WebCore/platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::sinkIntoSerializedImageBuffer):
* Source/WebCore/platform/mediastream/RealtimeIncomingAudioSource.h:
* Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.h:
* Source/WebCore/platform/mediastream/RealtimeMediaSource.h:
* Source/WebCore/platform/mediastream/RealtimeVideoCaptureSource.cpp:
(WebCore::RealtimeVideoCaptureSource::ref const): Deleted.
(WebCore::RealtimeVideoCaptureSource::deref const): Deleted.
(WebCore::RealtimeVideoCaptureSource::controlBlock const): Deleted.
* Source/WebCore/platform/mediastream/RealtimeVideoCaptureSource.h:
* Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h:
* Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
* Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.h:
(): Deleted.
* Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h:
* Source/WebCore/platform/mock/MockRealtimeAudioSource.h:
* Source/WebCore/platform/xr/PlatformXR.h:
(PlatformXR::Device::ref const): Deleted.
(PlatformXR::Device::deref const): Deleted.
(PlatformXR::Device::controlBlock const): Deleted.
* Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h:
* Source/WebKit/WebProcess/GPU/GPUProcessConnection.h:
* Source/WebKit/WebProcess/GPU/graphics/wc/RemoteWCLayerTreeHostProxy.h:
* Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.h:
* Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.h:
* Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h:
* Source/WebKit/WebProcess/GPU/media/RemoteImageDecoderAVFManager.h:
* Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.h:
(): Deleted.
* Source/WebKit/WebProcess/GPU/media/RemoteRemoteCommandListener.h:
* Source/WebKit/WebProcess/GPU/media/ios/RemoteMediaSessionHelper.h:
* Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
* Source/WebKit/WebProcess/GPU/webrtc/RemoteVideoFrameObjectHeapProxyProcessor.h:
* Source/WebKit/WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h:
* Source/WebKit/WebProcess/Model/ModelProcessConnection.h:
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayerManager.h:
(): Deleted.
* Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.h:
* Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
(TestWebKitAPI::ObjectAddingAndRemovingItself::~ObjectAddingAndRemovingItself):
(TestWebKitAPI::ObjectRemovingItself::create):
(TestWebKitAPI::ObjectRemovingItself::~ObjectRemovingItself):
(TestWebKitAPI::ObjectRemovingItself::ObjectRemovingItself):
(TestWebKitAPI::TEST(WTF_ThreadSafeWeakPtr, ThreadSafeWeakHashSetRemoveNonExistantOnDestruction)):
(TestWebKitAPI::TEST(WTF_ThreadSafeWeakPtr, MultipleInheritance)):
Canonical link: https://commits.webkit.org/287313@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list