Index: Source/modules/webaudio/AudioNode.cpp |
diff --git a/Source/modules/webaudio/AudioNode.cpp b/Source/modules/webaudio/AudioNode.cpp |
index 733bccb840c23edeca0a71922f2a4f7354d887d0..9e96fc3e81498e2ede81840bf342f7e2892cb946 100644 |
--- a/Source/modules/webaudio/AudioNode.cpp |
+++ b/Source/modules/webaudio/AudioNode.cpp |
@@ -52,9 +52,6 @@ AudioNode::AudioNode(AudioContext* context, float sampleRate) |
, m_sampleRate(sampleRate) |
, m_lastProcessingTime(-1) |
, m_lastNonSilentTime(-1) |
-#if !ENABLE(OILPAN) |
- , m_normalRefCount(1) // start out with normal refCount == 1 (like WTF::RefCounted class) |
-#endif |
, m_connectionRefCount(0) |
, m_isDisabled(false) |
, m_isDisposeCalled(false) |
@@ -63,9 +60,7 @@ AudioNode::AudioNode(AudioContext* context, float sampleRate) |
, m_channelInterpretation(AudioBus::Speakers) |
{ |
ScriptWrappable::init(this); |
-#if ENABLE(OILPAN) |
m_context->registerLiveNode(*this); |
-#endif |
#if DEBUG_AUDIONODE_REFERENCES |
if (!s_isNodeCountInitialized) { |
s_isNodeCountInitialized = true; |
@@ -81,11 +76,7 @@ AudioNode::~AudioNode() |
--s_instanceCount; |
#if DEBUG_AUDIONODE_REFERENCES |
--s_nodeCount[nodeType()]; |
-#if ENABLE(OILPAN) |
fprintf(stderr, "%p: %d: AudioNode::~AudioNode() %d\n", this, nodeType(), m_connectionRefCount); |
-#else |
- fprintf(stderr, "%p: %d: AudioNode::~AudioNode() %d %d\n", this, nodeType(), m_normalRefCount, m_connectionRefCount); |
-#endif |
#endif |
} |
@@ -176,7 +167,7 @@ void AudioNode::addInput() |
m_inputs.append(AudioNodeInput::create(*this)); |
} |
-void AudioNode::addOutput(PassOwnPtrWillBeRawPtr<AudioNodeOutput> output) |
+void AudioNode::addOutput(AudioNodeOutput* output) |
{ |
m_outputs.append(output); |
} |
@@ -473,7 +464,7 @@ void AudioNode::enableOutputsIfNecessary() |
void AudioNode::disableOutputsIfNecessary() |
{ |
// Disable outputs if appropriate. We do this if the number of connections is 0 or 1. The case |
- // of 0 is from finishDeref() where there are no connections left. The case of 1 is from |
+ // of 0 is from deref() where there are no connections left. The case of 1 is from |
// AudioNodeInput::disable() where we want to disable outputs when there's only one connection |
// left because we're ready to go away, but can't quite yet. |
if (m_connectionRefCount <= 1 && !m_isDisabled) { |
@@ -496,63 +487,15 @@ void AudioNode::disableOutputsIfNecessary() |
} |
} |
-#if !ENABLE(OILPAN) |
-void AudioNode::ref() |
-{ |
- atomicIncrement(&m_normalRefCount); |
- |
-#if DEBUG_AUDIONODE_REFERENCES |
- fprintf(stderr, "%p: %d: AudioNode::ref() %d %d\n", this, nodeType(), m_normalRefCount, m_connectionRefCount); |
-#endif |
-} |
-#endif |
- |
void AudioNode::makeConnection() |
{ |
atomicIncrement(&m_connectionRefCount); |
- // See the disabling code in finishDeref() below. This handles the case |
- // where a node is being re-connected after being used at least once and |
- // disconnected. In this case, we need to re-enable. |
+ // See the disabling code in disableOutputsIfNecessary(). This handles |
+ // the case where a node is being re-connected after being used at least |
+ // once and disconnected. In this case, we need to re-enable. |
enableOutputsIfNecessary(); |
} |
-#if !ENABLE(OILPAN) |
-void AudioNode::deref() |
-{ |
- // The actual work for deref happens completely within the audio context's |
- // graph lock. In the case of the audio thread, we must use a tryLock to |
- // avoid glitches. |
- bool hasLock = false; |
- bool mustReleaseLock = false; |
- |
- if (context()->isAudioThread()) { |
- // Real-time audio thread must not contend lock (to avoid glitches). |
- hasLock = context()->tryLock(mustReleaseLock); |
- } else { |
- context()->lock(mustReleaseLock); |
- hasLock = true; |
- } |
- |
- if (hasLock) { |
- // This is where the real deref work happens. |
- finishDeref(); |
- |
- if (mustReleaseLock) |
- context()->unlock(); |
- } else { |
- // We were unable to get the lock, so put this in a list to finish up later. |
- ASSERT(context()->isAudioThread()); |
- context()->addDeferredFinishDeref(this); |
- } |
- |
- // Once AudioContext::uninitialize() is called there's no more chances for deleteMarkedNodes() to get called, so we call here. |
- // We can't call in AudioContext::~AudioContext() since it will never be called as long as any AudioNode is alive |
- // because AudioNodes keep a reference to the context. |
- if (!context()->isInitialized()) |
- context()->deleteMarkedNodes(); |
-} |
-#endif |
- |
void AudioNode::breakConnection() |
{ |
// The actual work for deref happens completely within the audio context's |
@@ -585,33 +528,10 @@ void AudioNode::breakConnection() |
void AudioNode::breakConnectionWithLock() |
{ |
atomicDecrement(&m_connectionRefCount); |
-#if !ENABLE(OILPAN) |
- ASSERT(m_normalRefCount > 0); |
-#endif |
if (!m_connectionRefCount) |
disableOutputsIfNecessary(); |
} |
-#if !ENABLE(OILPAN) |
-void AudioNode::finishDeref() |
-{ |
- ASSERT(context()->isGraphOwner()); |
- |
- ASSERT(m_normalRefCount > 0); |
- atomicDecrement(&m_normalRefCount); |
- |
-#if DEBUG_AUDIONODE_REFERENCES |
- fprintf(stderr, "%p: %d: AudioNode::deref() %d %d\n", this, nodeType(), m_normalRefCount, m_connectionRefCount); |
-#endif |
- |
- if (!m_normalRefCount) { |
- // Mark for deletion at end of each render quantum or when context shuts |
- // down. |
- context()->markForDeletion(this); |
- } |
-} |
-#endif |
- |
#if DEBUG_AUDIONODE_REFERENCES |
bool AudioNode::s_isNodeCountInitialized = false; |