Chromium Code Reviews| Index: Source/modules/webaudio/AudioContext.cpp |
| diff --git a/Source/modules/webaudio/AudioContext.cpp b/Source/modules/webaudio/AudioContext.cpp |
| index 1fa9d78d1487be98833b4ca9eed55da21e13c2ac..e25ea5d92dbe9fd16adfc132aba682212f5fe74f 100644 |
| --- a/Source/modules/webaudio/AudioContext.cpp |
| +++ b/Source/modules/webaudio/AudioContext.cpp |
| @@ -114,6 +114,7 @@ PassRefPtr<AudioContext> AudioContext::create(Document& document, unsigned numbe |
| AudioContext::AudioContext(Document* document) |
| : ActiveDOMObject(document) |
| , m_isStopScheduled(false) |
| + , m_isCleared(false) |
| , m_isInitialized(false) |
| , m_isAudioThreadFinished(false) |
| , m_destinationNode(nullptr) |
| @@ -134,6 +135,7 @@ AudioContext::AudioContext(Document* document) |
| AudioContext::AudioContext(Document* document, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate) |
| : ActiveDOMObject(document) |
| , m_isStopScheduled(false) |
| + , m_isCleared(false) |
| , m_isInitialized(false) |
| , m_isAudioThreadFinished(false) |
| , m_destinationNode(nullptr) |
| @@ -155,9 +157,6 @@ AudioContext::AudioContext(Document* document, unsigned numberOfChannels, size_t |
| void AudioContext::constructCommon() |
| { |
| ScriptWrappable::init(this); |
| - // According to spec AudioContext must die only after page navigate. |
| - // Lets mark it as ActiveDOMObject with pending activity and unmark it in clear method. |
| - setPendingActivity(this); |
| FFTFrame::initialize(); |
| @@ -171,7 +170,7 @@ AudioContext::~AudioContext() |
| #endif |
| // AudioNodes keep a reference to their context, so there should be no way to be in the destructor if there are still AudioNodes around. |
| ASSERT(!m_isInitialized); |
| - ASSERT(m_isStopScheduled); |
|
kouhei (in TOK)
2014/03/26 01:21:34
m_isStopScheduled is not set when OfflineAudioCont
|
| + ASSERT(m_isCleared); |
| ASSERT(!m_nodesToDelete.size()); |
| ASSERT(!m_referencedNodes.size()); |
| ASSERT(!m_finishedNodes.size()); |
| @@ -218,8 +217,7 @@ void AudioContext::clear() |
| m_nodesMarkedForDeletion.clear(); |
| } while (m_nodesToDelete.size()); |
| - // It was set in constructCommon. |
| - unsetPendingActivity(this); |
| + m_isCleared = true; |
| } |
| void AudioContext::uninitialize() |
| @@ -276,6 +274,12 @@ void AudioContext::stop() |
| callOnMainThread(stopDispatch, this); |
| } |
| +bool AudioContext::hasPendingActivity() const |
| +{ |
| + // According to spec AudioContext must die only after page navigates. |
| + return m_isCleared; |
| +} |
| + |
| PassRefPtr<AudioBuffer> AudioContext::createBuffer(unsigned numberOfChannels, size_t numberOfFrames, float sampleRate, ExceptionState& exceptionState) |
| { |
| RefPtr<AudioBuffer> audioBuffer = AudioBuffer::create(numberOfChannels, numberOfFrames, sampleRate); |