| Index: Source/modules/webaudio/ScriptProcessorNode.cpp
|
| diff --git a/Source/modules/webaudio/ScriptProcessorNode.cpp b/Source/modules/webaudio/ScriptProcessorNode.cpp
|
| index e7fa915e8ab8d17e0fff06f863b0623ef0fc5f0b..2abe051793a903591880b12cad7f4f5c3dab29b8 100644
|
| --- a/Source/modules/webaudio/ScriptProcessorNode.cpp
|
| +++ b/Source/modules/webaudio/ScriptProcessorNode.cpp
|
| @@ -56,7 +56,7 @@ static size_t chooseBufferSize()
|
| return bufferSize;
|
| }
|
|
|
| -PassRefPtr<ScriptProcessorNode> ScriptProcessorNode::create(AudioContext* context, float sampleRate, size_t bufferSize, unsigned numberOfInputChannels, unsigned numberOfOutputChannels)
|
| +PassRefPtrWillBeRawPtr<ScriptProcessorNode> ScriptProcessorNode::create(AudioContext* context, float sampleRate, size_t bufferSize, unsigned numberOfInputChannels, unsigned numberOfOutputChannels)
|
| {
|
| // Check for valid buffer size.
|
| switch (bufferSize) {
|
| @@ -84,7 +84,7 @@ PassRefPtr<ScriptProcessorNode> ScriptProcessorNode::create(AudioContext* contex
|
| if (numberOfOutputChannels > AudioContext::maxNumberOfChannels())
|
| return nullptr;
|
|
|
| - return adoptRef(new ScriptProcessorNode(context, sampleRate, bufferSize, numberOfInputChannels, numberOfOutputChannels));
|
| + return adoptRefWillBeRefCountedGarbageCollected(new ScriptProcessorNode(context, sampleRate, bufferSize, numberOfInputChannels, numberOfOutputChannels));
|
| }
|
|
|
| ScriptProcessorNode::ScriptProcessorNode(AudioContext* context, float sampleRate, size_t bufferSize, unsigned numberOfInputChannels, unsigned numberOfOutputChannels)
|
| @@ -96,6 +96,9 @@ ScriptProcessorNode::ScriptProcessorNode(AudioContext* context, float sampleRate
|
| , m_numberOfInputChannels(numberOfInputChannels)
|
| , m_numberOfOutputChannels(numberOfOutputChannels)
|
| , m_internalInputBus(AudioBus::create(numberOfInputChannels, AudioNode::ProcessingSizeInFrames, false))
|
| +#if ENABLE(OILPAN)
|
| + , m_keepAlive(adoptPtr(new Persistent<AudioNode>(this)))
|
| +#endif
|
| {
|
| ScriptWrappable::init(this);
|
| // Regardless of the allowed buffer sizes, we still need to process at the granularity of the AudioNode.
|
| @@ -127,8 +130,8 @@ void ScriptProcessorNode::initialize()
|
| // Create double buffers on both the input and output sides.
|
| // These AudioBuffers will be directly accessed in the main thread by JavaScript.
|
| for (unsigned i = 0; i < 2; ++i) {
|
| - RefPtr<AudioBuffer> inputBuffer = m_numberOfInputChannels ? AudioBuffer::create(m_numberOfInputChannels, bufferSize(), sampleRate) : nullptr;
|
| - RefPtr<AudioBuffer> outputBuffer = m_numberOfOutputChannels ? AudioBuffer::create(m_numberOfOutputChannels, bufferSize(), sampleRate) : nullptr;
|
| + RefPtrWillBeRawPtr<AudioBuffer> inputBuffer = m_numberOfInputChannels ? AudioBuffer::create(m_numberOfInputChannels, bufferSize(), sampleRate) : nullptr;
|
| + RefPtrWillBeRawPtr<AudioBuffer> outputBuffer = m_numberOfOutputChannels ? AudioBuffer::create(m_numberOfOutputChannels, bufferSize(), sampleRate) : nullptr;
|
|
|
| m_inputBuffers.append(inputBuffer);
|
| m_outputBuffers.append(outputBuffer);
|
| @@ -280,6 +283,21 @@ double ScriptProcessorNode::latencyTime() const
|
| return std::numeric_limits<double>::infinity();
|
| }
|
|
|
| +#if ENABLE(OILPAN)
|
| +void ScriptProcessorNode::clearKeepAlive()
|
| +{
|
| + ASSERT(m_keepAlive);
|
| + m_keepAlive = nullptr;
|
| +}
|
| +#endif
|
| +
|
| +void ScriptProcessorNode::trace(Visitor* visitor)
|
| +{
|
| + visitor->trace(m_inputBuffers);
|
| + visitor->trace(m_outputBuffers);
|
| + AudioNode::trace(visitor);
|
| +}
|
| +
|
| } // namespace WebCore
|
|
|
| #endif // ENABLE(WEB_AUDIO)
|
|
|