]> SALOME platform Git repositories - modules/superv.git/commitdiff
Salome HOME
NPAL14110 : When we get an output value at the end of execution of a node
authorrahuel <rahuel@opencascade.com>
Tue, 13 Feb 2007 09:11:09 +0000 (09:11 +0000)
committerrahuel <rahuel@opencascade.com>
Tue, 13 Feb 2007 09:11:09 +0000 (09:11 +0000)
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)

src/GraphExecutor/DataFlowExecutor_InNodeThreads.cxx

index 9a81362ed1ea3abec62a25e95fed25f9b096d899..8b57213b564b016adfbfa460b898d474e286b9b3 100644 (file)
@@ -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 ) ;