| 2689 | } |
| 2690 | |
| 2691 | void |
| 2692 | Node::hasOutputNodesConnectedInternal(std::list<OutputEffectInstance* >* writers, |
| 2693 | std::list<const Node*>* markedNodes) const |
| 2694 | { |
| 2695 | if (std::find(markedNodes->begin(), markedNodes->end(), this) != markedNodes->end()) { |
| 2696 | return; |
| 2697 | } |
| 2698 | |
| 2699 | markedNodes->push_back(this); |
| 2700 | |
| 2701 | OutputEffectInstance* thisWriter = dynamic_cast<OutputEffectInstance*>( _imp->effect.get() ); |
| 2702 | |
| 2703 | if ( thisWriter && thisWriter->isOutput() && !dynamic_cast<GroupOutput*>(thisWriter) ) { |
| 2704 | writers->push_back(thisWriter); |
| 2705 | } else { |
| 2706 | NodesList outputs; |
| 2707 | getOutputsWithGroupRedirection(outputs); |
| 2708 | |
| 2709 | for (NodesList::iterator it = outputs.begin(); it != outputs.end(); ++it) { |
| 2710 | assert(*it); |
| 2711 | (*it)->hasOutputNodesConnectedInternal(writers, markedNodes); |
| 2712 | } |
| 2713 | } |
| 2714 | } |
| 2715 | |
| 2716 | void |
| 2717 | Node::hasOutputNodesConnected(std::list<OutputEffectInstance* >* writers) const |