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

Reply via email to