From: rahuel Date: Tue, 13 Feb 2007 09:11:09 +0000 (+0000) Subject: NPAL14110 : When we get an output value at the end of execution of a node X-Git-Tag: V3_2_6a1~7 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=2584785efa0ef00bbc60c821db628789b809103c;p=modules%2Fsuperv.git NPAL14110 : When we get an output value at the end of execution of a node and if that value is an output of a SubGraph corresponding to a MacroNode, that value was transmitted immediatly. So a node of the Graph of that MacroNode may be activated before the End of execution of the SubGraph. And moreover, if there was a loop in the SubGraph, that output value was transmitted for each step of the loop. So a same node in the Graph of the MacroNode may be activated a few times for each output value. Now output values of a subgraph are transmitted to the corresponding MacroNode only once at the end of the SubGraph (CheckAllDone method) --- diff --git a/src/GraphExecutor/DataFlowExecutor_InNodeThreads.cxx b/src/GraphExecutor/DataFlowExecutor_InNodeThreads.cxx index 9a81362..8b57213 100644 --- a/src/GraphExecutor/DataFlowExecutor_InNodeThreads.cxx +++ b/src/GraphExecutor/DataFlowExecutor_InNodeThreads.cxx @@ -3937,6 +3937,10 @@ bool GraphExecutor::InNode::OutParametersSet( bool Err , const char * ToNodeName = anOutPort->ChangeInPorts( j )->NodeName() ; if ( !strcmp( ToNodeName , _OutNode->Name() ) && _OutNode->Graph()->GraphMacroLevel() != 0 ) { +//JR NPAL14110 09.02.2007 : That must be done only at the end of SubGraph because we may +// have an output of the SubGraph in a Loop !... +// So that code must be done in CheckAllDone +#if 0 #if OutParametersSetTrace cdebug << "OutParametersSet ToNodeName " << _OutNode->Name() << " CoupledNode " << _OutNode->Graph()->CoupledNodeName() << _OutNode->Graph()->CoupledNode() @@ -3952,7 +3956,7 @@ bool GraphExecutor::InNode::OutParametersSet( bool Err , << _OutNode->Graph()->CoupledNodeName() << " , " << anOutPort->ChangeInPorts( j )->PortName() << " , value )" << endl ; #endif - +#endif } else { GraphBase::ComputingNode * ToNode = _OutNode->Graph()->GetChangeGraphNode( ToNodeName ) ;