Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 7f8550bf8877aa24a274d6855438444c65309303
https://github.com/WebKit/WebKit/commit/7f8550bf8877aa24a274d6855438444c65309303
Author: Chris Dumez <[email protected]>
Date: 2025-11-21 (Fri, 21 Nov 2025)
Changed paths:
M Source/WebCore/Modules/webaudio/AnalyserNode.h
M Source/WebCore/Modules/webaudio/AudioBasicInspectorNode.h
M Source/WebCore/Modules/webaudio/AudioBasicProcessorNode.h
M Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h
M Source/WebCore/Modules/webaudio/AudioDestinationNode.h
M Source/WebCore/Modules/webaudio/AudioNode.h
M Source/WebCore/Modules/webaudio/AudioNodeInput.cpp
M Source/WebCore/Modules/webaudio/AudioNodeInput.h
M Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp
M Source/WebCore/Modules/webaudio/AudioNodeOutput.h
M Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.h
M Source/WebCore/Modules/webaudio/AudioWorkletNode.h
M Source/WebCore/Modules/webaudio/BaseAudioContext.cpp
M Source/WebCore/Modules/webaudio/BaseAudioContext.h
M Source/WebCore/Modules/webaudio/BiquadFilterNode.h
M Source/WebCore/Modules/webaudio/ChannelMergerNode.h
M Source/WebCore/Modules/webaudio/ChannelSplitterNode.h
M Source/WebCore/Modules/webaudio/ConstantSourceNode.h
M Source/WebCore/Modules/webaudio/ConvolverNode.h
M Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h
M Source/WebCore/Modules/webaudio/DelayNode.h
M Source/WebCore/Modules/webaudio/DynamicsCompressorNode.h
M Source/WebCore/Modules/webaudio/GainNode.h
M Source/WebCore/Modules/webaudio/IIRFilterNode.h
M Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.h
M Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.h
M Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.h
M Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.h
M Source/WebCore/Modules/webaudio/OscillatorNode.h
M Source/WebCore/Modules/webaudio/PannerNode.h
M Source/WebCore/Modules/webaudio/ScriptProcessorNode.h
M Source/WebCore/Modules/webaudio/StereoPannerNode.h
M Source/WebCore/Modules/webaudio/WaveShaperNode.h
M Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations
M Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations
Log Message:
-----------
Reduce use of raw pointers in containers in BaseAudioContext.h
https://bugs.webkit.org/show_bug.cgi?id=302841
Reviewed by Geoffrey Garen.
* Source/WebCore/Modules/webaudio/AnalyserNode.h:
* Source/WebCore/Modules/webaudio/AudioBasicInspectorNode.h:
* Source/WebCore/Modules/webaudio/AudioBasicProcessorNode.h:
* Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h:
* Source/WebCore/Modules/webaudio/AudioDestinationNode.h:
* Source/WebCore/Modules/webaudio/AudioNode.h:
* Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:
(WebCore::AudioNodeInput::disable):
(WebCore::AudioNodeInput::enable):
(WebCore::AudioNodeInput::didUpdate):
* Source/WebCore/Modules/webaudio/AudioNodeInput.h:
* Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp:
(WebCore::AudioNodeOutput::propagateChannelCount):
(WebCore::AudioNodeOutput::pull):
* Source/WebCore/Modules/webaudio/AudioNodeOutput.h:
(WebCore::AudioNodeOutput::checkedNode const):
(WebCore::AudioNodeOutput::context):
* Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.h:
* Source/WebCore/Modules/webaudio/AudioWorkletNode.h:
(WebCore::AudioWorkletNode::parameters): Deleted.
(WebCore::AudioWorkletNode::port): Deleted.
* Source/WebCore/Modules/webaudio/BaseAudioContext.cpp:
(WebCore::BaseAudioContext::uninitialize):
At this point, audio rendering is finished since we're uninitializing.
Therefore, we should clear m_renderingAutomaticPullNodes since those nodes
are no longer rendering. Normally, this would happen at the end of
rendering, in handlePostRenderTasks(). However, handlePostRenderTasks()
uses a tryLock() and returns early if it fails to grab the lock, which
could leave pointers in m_renderingAutomaticPullNodes. After switching
to CheckedPtr, we can see that we could end up in a situation where these
pointers would start pointing to dead nodes.
(WebCore::BaseAudioContext::updateTailProcessingNodes):
(WebCore::BaseAudioContext::disableOutputsForFinishedTailProcessingNodes):
(WebCore::BaseAudioContext::finishTailProcessing):
(WebCore::BaseAudioContext::deleteMarkedNodes):
* Source/WebCore/Modules/webaudio/BaseAudioContext.h:
(WebCore::BaseAudioContext::TailProcessingNode::checkedNode const):
* Source/WebCore/Modules/webaudio/BiquadFilterNode.h:
* Source/WebCore/Modules/webaudio/ChannelMergerNode.h:
* Source/WebCore/Modules/webaudio/ChannelSplitterNode.h:
* Source/WebCore/Modules/webaudio/ConstantSourceNode.h:
* Source/WebCore/Modules/webaudio/ConvolverNode.h:
* Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:
* Source/WebCore/Modules/webaudio/DelayNode.h:
* Source/WebCore/Modules/webaudio/DynamicsCompressorNode.h:
* Source/WebCore/Modules/webaudio/GainNode.h:
* Source/WebCore/Modules/webaudio/IIRFilterNode.h:
* Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.h:
* Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.h:
* Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.h:
* Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.h:
* Source/WebCore/Modules/webaudio/OscillatorNode.h:
* Source/WebCore/Modules/webaudio/PannerNode.h:
* Source/WebCore/Modules/webaudio/ScriptProcessorNode.h:
* Source/WebCore/Modules/webaudio/StereoPannerNode.h:
* Source/WebCore/Modules/webaudio/WaveShaperNode.h:
* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:
Canonical link: https://commits.webkit.org/303383@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications