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());