void AudioNodeInput::disconnect(AudioNodeOutput* output) { ASSERT(context()->isGraphOwner()); ASSERT(output && node()); if (!output || !node()) return; // First try to disconnect from "active" connections. if (m_outputs.remove(output)) { changedOutputs(); output->removeInput(this); node()->deref(AudioNode::RefTypeConnection); // Note: it's important to return immediately after all deref() calls since the node may be deleted. return; } // Otherwise, try to disconnect from disabled connections. if (m_disabledOutputs.remove(output)) { output->removeInput(this); node()->deref(AudioNode::RefTypeConnection); // Note: it's important to return immediately after all deref() calls since the node may be deleted. return; } ASSERT_NOT_REACHED(); }
void AudioParamHandler::disconnect(AudioNodeOutput& output) { ASSERT(deferredTaskHandler().isGraphOwner()); if (m_outputs.contains(&output)) { m_outputs.remove(&output); changedOutputs(); output.removeParam(*this); } }
void AudioParamHandler::connect(AudioNodeOutput& output) { ASSERT(deferredTaskHandler().isGraphOwner()); if (m_outputs.contains(&output)) return; output.addParam(*this); m_outputs.add(&output); changedOutputs(); }
void AudioNodeInput::disable(AudioNodeOutput& output) { ASSERT(deferredTaskHandler().isGraphOwner()); DCHECK(m_outputs.contains(&output)); m_disabledOutputs.add(&output); m_outputs.remove(&output); changedOutputs(); // Propagate disabled state to outputs. handler().disableOutputsIfNecessary(); }
void AudioNodeInput::connect(AudioNodeOutput& output) { ASSERT(deferredTaskHandler().isGraphOwner()); // Check if we're already connected to this output. if (m_outputs.contains(&output)) return; output.addInput(*this); m_outputs.add(&output); changedOutputs(); }
void AudioParam::disconnect(AudioNodeOutput* output) { ASSERT(context()->isGraphOwner()); ASSERT(output); if (!output) return; if (m_outputs.remove(output)) { changedOutputs(); output->removeParam(this); } }
void AudioParam::connect(AudioNodeOutput* output) { ASSERT(context()->isGraphOwner()); ASSERT(output); if (!output) return; if (!m_outputs.add(output).isNewEntry) return; output->addParam(this); changedOutputs(); }
void AudioNodeInput::enable(AudioNodeOutput& output) { ASSERT(deferredTaskHandler().isGraphOwner()); // Move output from disabled list to active list. m_outputs.add(&output); if (m_disabledOutputs.size() > 0) { DCHECK(m_disabledOutputs.contains(&output)); m_disabledOutputs.remove(&output); } changedOutputs(); // Propagate enabled state to outputs. handler().enableOutputsIfNecessary(); }
void AudioNodeInput::disable(AudioNodeOutput* output) { ASSERT(context()->isGraphOwner()); ASSERT(output && node()); if (!output || !node()) return; ASSERT(m_outputs.contains(output)); m_disabledOutputs.add(output); m_outputs.remove(output); changedOutputs(); // Propagate disabled state to outputs. node()->disableOutputsIfNecessary(); }
void AudioNodeInput::disable(AudioNodeOutput* output) { ASSERT(context()->isGraphOwner()); ASSERT(output && node()); if (!output || !node()) return; ASSERT(m_outputs.contains(output)); m_disabledOutputs.add(output); m_outputs.remove(output); changedOutputs(); node()->ref(AudioNode::RefTypeDisabled); node()->deref(AudioNode::RefTypeConnection); // Note: it's important to return immediately after all deref() calls since the node may be deleted. }
void AudioNodeInput::connect(AudioNodeOutput* output) { ASSERT(context()->isGraphOwner()); ASSERT(output && node()); if (!output || !node()) return; // Check if we're already connected to this output. if (!m_outputs.add(output).isNewEntry) return; output->addInput(this); changedOutputs(); // Sombody has just connected to us, so count it as a reference. node()->ref(AudioNode::RefTypeConnection); }
void AudioNodeInput::enable(AudioNodeOutput* output) { ASSERT(context().isGraphOwner()); ASSERT(output && node()); if (!output || !node()) return; ASSERT(m_disabledOutputs.contains(output)); // Move output from disabled list to active list. m_outputs.add(output); m_disabledOutputs.remove(output); changedOutputs(); // Propagate enabled state to outputs. node()->enableOutputsIfNecessary(); }
void AudioNodeInput::disconnect(AudioNodeOutput& output) { ASSERT(deferredTaskHandler().isGraphOwner()); // First try to disconnect from "active" connections. if (m_outputs.contains(&output)) { m_outputs.remove(&output); changedOutputs(); output.removeInput(*this); // Note: it's important to return immediately after removeInput() calls // since the node may be deleted. return; } // Otherwise, try to disconnect from disabled connections. if (m_disabledOutputs.contains(&output)) { m_disabledOutputs.remove(&output); output.removeInput(*this); // Note: it's important to return immediately after all removeInput() calls // since the node may be deleted. return; } ASSERT_NOT_REACHED(); }