void PannerNode::FindConnectedSources(AudioNode* aNode, nsTArray<AudioBufferSourceNode*>& aSources, std::set<AudioNode*>& aNodesSeen) { if (!aNode) { return; } const nsTArray<InputNode>& inputNodes = aNode->InputNodes(); for(unsigned i = 0; i < inputNodes.Length(); i++) { // Return if we find a node that we have seen already. if (aNodesSeen.find(inputNodes[i].mInputNode) != aNodesSeen.end()) { return; } aNodesSeen.insert(inputNodes[i].mInputNode); // Recurse FindConnectedSources(inputNodes[i].mInputNode, aSources, aNodesSeen); // Check if this node is an AudioBufferSourceNode AudioBufferSourceNode* node = inputNodes[i].mInputNode->AsAudioBufferSourceNode(); if (node) { aSources.AppendElement(node); } } }
void PannerNode::FindConnectedSources() { mSources.Clear(); std::set<AudioNode*> cycleSet; FindConnectedSources(this, mSources, cycleSet); }
void PannerNode::FindConnectedSources() { mSources.Clear(); std::set<AudioNode*> cycleSet; FindConnectedSources(this, mSources, cycleSet); for (unsigned i = 0; i < mSources.Length(); i++) { mSources[i]->RegisterPannerNode(this); } }