| 4924 | } |
| 4925 | |
| 4926 | void |
| 4927 | Node::hasOutputNodesConnectedInternal(std::list<OutputEffectInstance* >* writers, |
| 4928 | std::list<const Node*>* markedNodes) const |
| 4929 | { |
| 4930 | if (std::find(markedNodes->begin(), markedNodes->end(), this) != markedNodes->end()) { |
| 4931 | return; |
| 4932 | } |
| 4933 | |
| 4934 | markedNodes->push_back(this); |
| 4935 | |
| 4936 | OutputEffectInstance* thisWriter = dynamic_cast<OutputEffectInstance*>( _imp->effect.get() ); |
| 4937 | |
| 4938 | if ( thisWriter && thisWriter->isOutput() && !dynamic_cast<GroupOutput*>(thisWriter) ) { |
| 4939 | writers->push_back(thisWriter); |
| 4940 | } else { |
| 4941 | NodesList outputs; |
| 4942 | getOutputsWithGroupRedirection(outputs); |
| 4943 | |
| 4944 | for (NodesList::iterator it = outputs.begin(); it != outputs.end(); ++it) { |
| 4945 | assert(*it); |
| 4946 | (*it)->hasOutputNodesConnectedInternal(writers, markedNodes); |
| 4947 | } |
| 4948 | } |
| 4949 | } |
| 4950 | |
| 4951 | void |
| 4952 | Node::hasOutputNodesConnected(std::list<OutputEffectInstance* >* writers) const |