| Index: Source/modules/webaudio/AudioBufferSourceNode.cpp
|
| diff --git a/Source/modules/webaudio/AudioBufferSourceNode.cpp b/Source/modules/webaudio/AudioBufferSourceNode.cpp
|
| index dc55f76d4d63b8a2b3f37d39d48124071619c55b..67b6e38b64cdb0200929ae500a72e848a1657589 100644
|
| --- a/Source/modules/webaudio/AudioBufferSourceNode.cpp
|
| +++ b/Source/modules/webaudio/AudioBufferSourceNode.cpp
|
| @@ -64,7 +64,6 @@ AudioBufferSourceNode::AudioBufferSourceNode(AudioContext* context, float sample
|
| , m_isGrain(false)
|
| , m_grainOffset(0.0)
|
| , m_grainDuration(DefaultGrainDuration)
|
| - , m_pannerNode(0)
|
| {
|
| ScriptWrappable::init(this);
|
| setNodeType(NodeTypeAudioBufferSource);
|
| @@ -452,20 +451,20 @@ bool AudioBufferSourceNode::propagatesSilence() const
|
| void AudioBufferSourceNode::setPannerNode(PannerNode* pannerNode)
|
| {
|
| if (m_pannerNode != pannerNode && !hasFinished()) {
|
| - if (pannerNode)
|
| - pannerNode->ref(AudioNode::RefTypeConnection);
|
| - if (m_pannerNode)
|
| - m_pannerNode->deref(AudioNode::RefTypeConnection);
|
| -
|
| + RefPtr<PannerNode> oldPannerNode(m_pannerNode.release());
|
| m_pannerNode = pannerNode;
|
| + if (pannerNode)
|
| + pannerNode->wasConnected();
|
| + if (oldPannerNode)
|
| + oldPannerNode->willBeDisconnected();
|
| }
|
| }
|
|
|
| void AudioBufferSourceNode::clearPannerNode()
|
| {
|
| if (m_pannerNode) {
|
| - m_pannerNode->deref(AudioNode::RefTypeConnection);
|
| - m_pannerNode = 0;
|
| + m_pannerNode->willBeDisconnected();
|
| + m_pannerNode.clear();
|
| }
|
| }
|
|
|
|
|