Title: [267609] trunk/Source/WebCore
Revision
267609
Author
cdu...@apple.com
Date
2020-09-25 17:01:58 -0700 (Fri, 25 Sep 2020)

Log Message

Avoid having to call context.lazyInitialize() in every AudioNode factory function
https://bugs.webkit.org/show_bug.cgi?id=216989

Reviewed by Darin Adler.

Avoid having to call context.lazyInitialize() in every AudioNode factory function.
Replace all these calls with a single one inside the AudioNode constructor.

No new tests, no Web facing behavior change.

* Modules/webaudio/AnalyserNode.cpp:
(WebCore::AnalyserNode::create):
* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::create):
* Modules/webaudio/AudioNode.cpp:
(WebCore::AudioNode::AudioNode):
* Modules/webaudio/BaseAudioContext.cpp:
(WebCore::BaseAudioContext::lazyInitialize):
* Modules/webaudio/BiquadFilterNode.cpp:
(WebCore::BiquadFilterNode::create):
* Modules/webaudio/ChannelMergerNode.cpp:
(WebCore::ChannelMergerNode::create):
* Modules/webaudio/ChannelSplitterNode.cpp:
(WebCore::ChannelSplitterNode::create):
* Modules/webaudio/ConstantSourceNode.cpp:
(WebCore::ConstantSourceNode::create):
* Modules/webaudio/ConvolverNode.cpp:
(WebCore::ConvolverNode::create):
* Modules/webaudio/DelayNode.cpp:
(WebCore::DelayNode::create):
* Modules/webaudio/DynamicsCompressorNode.cpp:
(WebCore::DynamicsCompressorNode::create):
* Modules/webaudio/GainNode.cpp:
(WebCore::GainNode::create):
* Modules/webaudio/IIRFilterNode.cpp:
(WebCore::IIRFilterNode::create):
* Modules/webaudio/MediaElementAudioSourceNode.cpp:
(WebCore::MediaElementAudioSourceNode::create):
* Modules/webaudio/MediaStreamAudioDestinationNode.cpp:
(WebCore::MediaStreamAudioDestinationNode::create):
* Modules/webaudio/MediaStreamAudioSourceNode.cpp:
(WebCore::MediaStreamAudioSourceNode::create):
* Modules/webaudio/OscillatorNode.cpp:
(WebCore::OscillatorNode::create):
* Modules/webaudio/PannerNode.cpp:
(WebCore::PannerNode::create):
* Modules/webaudio/PeriodicWave.cpp:
(WebCore::PeriodicWave::create):
* Modules/webaudio/StereoPannerNode.cpp:
(WebCore::StereoPannerNode::create):
* Modules/webaudio/WaveShaperNode.cpp:
(WebCore::WaveShaperNode::create):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (267608 => 267609)


--- trunk/Source/WebCore/ChangeLog	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/ChangeLog	2020-09-26 00:01:58 UTC (rev 267609)
@@ -1,3 +1,58 @@
+2020-09-25  Chris Dumez  <cdu...@apple.com>
+
+        Avoid having to call context.lazyInitialize() in every AudioNode factory function
+        https://bugs.webkit.org/show_bug.cgi?id=216989
+
+        Reviewed by Darin Adler.
+
+        Avoid having to call context.lazyInitialize() in every AudioNode factory function.
+        Replace all these calls with a single one inside the AudioNode constructor.
+
+        No new tests, no Web facing behavior change.
+
+        * Modules/webaudio/AnalyserNode.cpp:
+        (WebCore::AnalyserNode::create):
+        * Modules/webaudio/AudioBufferSourceNode.cpp:
+        (WebCore::AudioBufferSourceNode::create):
+        * Modules/webaudio/AudioNode.cpp:
+        (WebCore::AudioNode::AudioNode):
+        * Modules/webaudio/BaseAudioContext.cpp:
+        (WebCore::BaseAudioContext::lazyInitialize):
+        * Modules/webaudio/BiquadFilterNode.cpp:
+        (WebCore::BiquadFilterNode::create):
+        * Modules/webaudio/ChannelMergerNode.cpp:
+        (WebCore::ChannelMergerNode::create):
+        * Modules/webaudio/ChannelSplitterNode.cpp:
+        (WebCore::ChannelSplitterNode::create):
+        * Modules/webaudio/ConstantSourceNode.cpp:
+        (WebCore::ConstantSourceNode::create):
+        * Modules/webaudio/ConvolverNode.cpp:
+        (WebCore::ConvolverNode::create):
+        * Modules/webaudio/DelayNode.cpp:
+        (WebCore::DelayNode::create):
+        * Modules/webaudio/DynamicsCompressorNode.cpp:
+        (WebCore::DynamicsCompressorNode::create):
+        * Modules/webaudio/GainNode.cpp:
+        (WebCore::GainNode::create):
+        * Modules/webaudio/IIRFilterNode.cpp:
+        (WebCore::IIRFilterNode::create):
+        * Modules/webaudio/MediaElementAudioSourceNode.cpp:
+        (WebCore::MediaElementAudioSourceNode::create):
+        * Modules/webaudio/MediaStreamAudioDestinationNode.cpp:
+        (WebCore::MediaStreamAudioDestinationNode::create):
+        * Modules/webaudio/MediaStreamAudioSourceNode.cpp:
+        (WebCore::MediaStreamAudioSourceNode::create):
+        * Modules/webaudio/OscillatorNode.cpp:
+        (WebCore::OscillatorNode::create):
+        * Modules/webaudio/PannerNode.cpp:
+        (WebCore::PannerNode::create):
+        * Modules/webaudio/PeriodicWave.cpp:
+        (WebCore::PeriodicWave::create):
+        * Modules/webaudio/StereoPannerNode.cpp:
+        (WebCore::StereoPannerNode::create):
+        * Modules/webaudio/WaveShaperNode.cpp:
+        (WebCore::WaveShaperNode::create):
+
 2020-09-25  Lauro Moura  <lmo...@igalia.com>
 
         Use CMake 3.10 compatible list functions

Modified: trunk/Source/WebCore/Modules/webaudio/AnalyserNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/AnalyserNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/AnalyserNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -40,8 +40,6 @@
 {
     if (context.isStopped())
         return Exception { InvalidStateError };
-
-    context.lazyInitialize();
     
     auto analyser = adoptRef(*new AnalyserNode(context));
     

Modified: trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -70,8 +70,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     auto node = adoptRef(*new AudioBufferSourceNode(context));
 
     node->setBuffer(WTFMove(options.buffer));

Modified: trunk/Source/WebCore/Modules/webaudio/AudioNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/AudioNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/AudioNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -114,6 +114,10 @@
         atexit(AudioNode::printNodeCounts);
     }
 #endif
+
+    // AudioDestinationNodes are not constructed by JS and should not cause lazy initialization.
+    if (type != NodeTypeDestination)
+        context.lazyInitialize();
 }
 
 AudioNode::~AudioNode()

Modified: trunk/Source/WebCore/Modules/webaudio/BaseAudioContext.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/BaseAudioContext.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/BaseAudioContext.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -229,6 +229,7 @@
             ++s_hardwareContextCount;
         }
     }
+
     m_isInitialized = true;
 }
 

Modified: trunk/Source/WebCore/Modules/webaudio/BiquadFilterNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/BiquadFilterNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/BiquadFilterNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -38,8 +38,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     auto node = adoptRef(*new BiquadFilterNode(context));
 
     auto result = node->handleAudioNodeOptions(options, { 2, ChannelCountMode::Max, ChannelInterpretation::Speakers });

Modified: trunk/Source/WebCore/Modules/webaudio/ChannelMergerNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/ChannelMergerNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/ChannelMergerNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -45,8 +45,6 @@
 {
     if (context.isStopped())
         return Exception { InvalidStateError };
-
-    context.lazyInitialize();
     
     if (options.numberOfInputs > AudioContext::maxNumberOfChannels() || !options.numberOfInputs)
         return Exception { IndexSizeError, "Number of inputs is not in the allowed range."_s };

Modified: trunk/Source/WebCore/Modules/webaudio/ChannelSplitterNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/ChannelSplitterNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/ChannelSplitterNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -41,8 +41,6 @@
 {
     if (context.isStopped())
         return Exception { InvalidStateError };
-
-    context.lazyInitialize();
     
     if (options.numberOfOutputs > AudioContext::maxNumberOfChannels() || !options.numberOfOutputs)
         return Exception { IndexSizeError, "Number of outputs is not in the allowed range"_s };

Modified: trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/ConstantSourceNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -44,8 +44,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
     
-    context.lazyInitialize();
-    
     auto node = adoptRef(*new ConstantSourceNode(context, options.offset));
     
     context.refNode(node);

Modified: trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -60,8 +60,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     auto node = adoptRef(*new ConvolverNode(context));
 
     auto result = node->handleAudioNodeOptions(options, { 2, ChannelCountMode::ClampedMax, ChannelInterpretation::Speakers });

Modified: trunk/Source/WebCore/Modules/webaudio/DelayNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/DelayNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/DelayNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -52,8 +52,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     if (options.maxDelayTime <= 0 || options.maxDelayTime >= maximumAllowedDelayTime)
         return Exception { NotSupportedError };
 

Modified: trunk/Source/WebCore/Modules/webaudio/DynamicsCompressorNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/DynamicsCompressorNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/DynamicsCompressorNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -50,8 +50,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     auto node = adoptRef(*new DynamicsCompressorNode(context, options));
 
     auto result = node->handleAudioNodeOptions(options, { 2, ChannelCountMode::ClampedMax, ChannelInterpretation::Speakers });

Modified: trunk/Source/WebCore/Modules/webaudio/GainNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/GainNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/GainNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -43,8 +43,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     auto gainNode = adoptRef(*new GainNode(context));
 
     auto result = gainNode->handleAudioNodeOptions(options, { 2, ChannelCountMode::Max, ChannelInterpretation::Speakers });

Modified: trunk/Source/WebCore/Modules/webaudio/IIRFilterNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/IIRFilterNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/IIRFilterNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -87,8 +87,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     if (!options.feedforward.size() || options.feedforward.size() > IIRFilter::maxOrder)
         return Exception { NotSupportedError, "feedforward array must have a length between 1 and 20"_s };
 

Modified: trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -55,8 +55,6 @@
     if (options.mediaElement->audioSourceNode())
         return Exception { InvalidStateError, "Media element is already associated with an audio source node"_s };
 
-    context.lazyInitialize();
-
     auto node = adoptRef(*new MediaElementAudioSourceNode(context, *options.mediaElement));
 
     options.mediaElement->setAudioSourceNode(node.ptr());

Modified: trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -44,8 +44,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     auto node = adoptRef(*new MediaStreamAudioDestinationNode(context));
 
     auto result = node->handleAudioNodeOptions(options, { 2, ChannelCountMode::Explicit, ChannelInterpretation::Speakers });

Modified: trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -60,8 +60,6 @@
     if (!providerTrack)
         return Exception { InvalidStateError, "Could not find an audio track with an audio source provider"_s };
 
-    context.lazyInitialize();
-
     auto node = adoptRef(*new MediaStreamAudioSourceNode(context, *options.mediaStream, *providerTrack));
     node->setFormat(2, context.sampleRate());
 

Modified: trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -65,8 +65,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     if (options.type == OscillatorType::Custom && !options.periodicWave)
         return Exception { InvalidStateError, "Must provide periodicWave when using custom type."_s };
     

Modified: trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -60,8 +60,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     auto panner = adoptRef(*new PannerNode(context, options));
 
     auto result = panner->handleAudioNodeOptions(options, { 2, ChannelCountMode::ClampedMax, ChannelInterpretation::Speakers });

Modified: trunk/Source/WebCore/Modules/webaudio/PeriodicWave.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/PeriodicWave.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/PeriodicWave.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -64,8 +64,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-
     Vector<float> real;
     Vector<float> imag;
     

Modified: trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/StereoPannerNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -44,8 +44,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
     
-    context.lazyInitialize();
-    
     auto stereo = adoptRef(*new StereoPannerNode(context, options.pan));
     
     auto result = stereo->handleAudioNodeOptions(options, { 2, ChannelCountMode::ClampedMax, ChannelInterpretation::Speakers });

Modified: trunk/Source/WebCore/Modules/webaudio/WaveShaperNode.cpp (267608 => 267609)


--- trunk/Source/WebCore/Modules/webaudio/WaveShaperNode.cpp	2020-09-25 23:53:44 UTC (rev 267608)
+++ trunk/Source/WebCore/Modules/webaudio/WaveShaperNode.cpp	2020-09-26 00:01:58 UTC (rev 267609)
@@ -42,9 +42,6 @@
     if (context.isStopped())
         return Exception { InvalidStateError };
 
-    context.lazyInitialize();
-    UNUSED_PARAM(options);
-
     RefPtr<Float32Array> curve;
     if (options.curve) {
         curve = Float32Array::tryCreate(options.curve->data(), options.curve->size());
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to