]> Creatis software - bbtk.git/commitdiff
*** empty log message ***
authorguigues <guigues>
Mon, 21 Apr 2008 12:43:05 +0000 (12:43 +0000)
committerguigues <guigues>
Mon, 21 Apr 2008 12:43:05 +0000 (12:43 +0000)
kernel/src/bbtkAtomicBlackBox.cxx
kernel/src/bbtkBlackBox.cxx
kernel/src/bbtkBlackBox.h
kernel/src/bbtkComplexBlackBox.cxx
kernel/src/bbtkWxBlackBox.cxx
kernel/src/bbtkWxBlackBox.h

index ae0869d31b64694259efc79f36c475e9321b2e91..99fe6d25946abc9f219d07f95a6ca5b09227b2f0 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkAtomicBlackBox.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:14 $
-  Version:   $Revision: 1.4 $
+  Date:      $Date: 2008/04/21 12:43:05 $
+  Version:   $Revision: 1.5 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -81,26 +81,11 @@ namespace bbtk
                        <<(caller?caller->GetFullName():"0")<<") ["
                        <<bbGetFullName()<<"]"<<std::endl);
     
-    if (bbGetExecuting()) 
-      {
-       bbtkWarning(bbGetFullName()<<" : Cyclic execution stopped");
-       return UPTODATE;
-      }
-    bbSetExecuting(true);
-
     bbtkDebugMessage("Process",5,"Initial Status  = "<<bbGetStatus()
                     <<std::endl);
     bbtkDebugMessage("Process",5,"BoxProcessMode  = "
                     <<bbGetInputBoxProcessMode()<<std::endl);
    
-    /* 
-    if ( bbGetStatus() == UPDATING ) 
-      {
-    bbtkMessage("Warning",1,"!! WARNING !! Cyclic pipeline execution (bbBackwardUpdate ["<<bbGetFullName()<<"] reentered). This may indicate an error in pipeline conception"<<std::endl);
-    // return UPTODATE;
-    bbSetStatus(MODIFIED);
-      }
-    */
 
     if ( ( bbGetStatus() == MODIFIED ) ||
         ( bbBoxProcessModeIsAlways() ) )
@@ -108,8 +93,6 @@ namespace bbtk
         bool wasExecuting = bbGlobalGetSomeBoxExecuting();
         bbGlobalSetSomeBoxExecuting(true);
 
-        //     bbSetStatus(UPDATING);
-
         // Updates its inputs
         IOStatus s = bbUpdateInputs();
     
@@ -149,7 +132,6 @@ namespace bbtk
             <<bbGetFullName()<<"]"<<std::endl);
     bbtkDebugDecTab("Process",1);
 
-    bbSetExecuting(false);
 
     return bbGetStatus();
 
index 58ae9594c317d3447ce6112633eeb90dbdec934b..dbba13d64ef5a35755f0609d166fc1cd80703ef9 100644 (file)
@@ -3,8 +3,8 @@
 Program:   bbtk
 Module:    $RCSfile: bbtkBlackBox.cxx,v $
 Language:  C++
-Date:      $Date: 2008/04/18 12:59:15 $
-Version:   $Revision: 1.10 $
+Date:      $Date: 2008/04/21 12:43:05 $
+Version:   $Revision: 1.11 $
                                                                                 
 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
 l'Image). All rights reserved. See doc/license.txt or
@@ -93,8 +93,8 @@ namespace bbtk
     : bbmName(name), 
       bbmStatus(MODIFIED), 
       bbmBoxProcessMode("Pipeline"),
-      bbmParent(),
-      bbmExecuting(false)
+      bbmParent()
+
   {
     bbtkDebugMessage("object",4,"==> BlackBox::BlackBox(\""
                     <<name<<"\")"<<std::endl);
@@ -109,8 +109,8 @@ namespace bbtk
     : bbmName(name), 
       bbmStatus(from.bbmStatus), 
       bbmBoxProcessMode(from.bbmBoxProcessMode),
-      bbmParent(),
-      bbmExecuting(false)
+      bbmParent()
+
   {
     bbtkDebugMessage("object",4,"==> BlackBox::BlackBox("
                     <<from.bbGetFullName()<<",\""
index 04843d24cb5224655b7a433c0cdb9363228f9e3d..d5f06710ffda4b87718702077d48b425c4f0edd2 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkBlackBox.h,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:15 $
-  Version:   $Revision: 1.6 $
+  Date:      $Date: 2008/04/21 12:43:05 $
+  Version:   $Revision: 1.7 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See doc/license.txt or
@@ -363,9 +363,6 @@ bool reaction = true);
     virtual void bbCopyIOValues(BlackBox& from);
     //==================================================================
 
-    bool bbGetExecuting() const { return bbmExecuting; }
-    void bbSetExecuting(bool b) { bbmExecuting = b; }
-
     // Black box objects have a special deleter 
     // which must take care of releasing the descriptor 
     // **AFTER** the box is deleted 
@@ -407,10 +404,6 @@ bool reaction = true);
     BlackBox::WeakPointer bbmParent;
     //==================================================================
 
-    //==================================================================
-    // Am I executing (to test pipeline cycles) ?
-    bool bbmExecuting;
-    //==================================================================
 
    //==================================================================
     // ATTRIBUTES
index 56fdb05c09bb5055c5d4aa9dabcec1ef4ee54c20..922701b645a743c4704a0cc7cc3770c737e6c9c0 100644 (file)
@@ -3,8 +3,8 @@
 Program:   bbtk
 Module:    $RCSfile: bbtkComplexBlackBox.cxx,v $
 Language:  C++
-Date:      $Date: 2008/04/21 11:41:56 $
-Version:   $Revision: 1.11 $
+Date:      $Date: 2008/04/21 12:43:05 $
+Version:   $Revision: 1.12 $
                                                                                 
 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
 l'Image). All rights reserved. See Doc/License.txt or
@@ -324,12 +324,6 @@ namespace bbtk
        bbtkInternalError("ComplexBlackBox::bbBackwardUpdate called with caller=0");
       }
 
-    if (bbGetExecuting()) 
-      {
-       bbtkWarning(bbGetFullName()<<" : Cyclic execution stopped");
-       return UPTODATE;
-      }
-    bbSetExecuting(true);
 
     IOStatus s = UPTODATE;
     const BlackBoxDescriptor::OutputDescriptorMapType& omap 
@@ -373,11 +367,8 @@ namespace bbtk
       }
     bbtkDebugDecTab("Process",1);
 
-    bbSetExecuting(false);
-
     return s;
     
-    //    return UPTODATE;
   }
   //==================================================================
 
index 2413e4a55aba8e69c9e067adafb05c2db8b156db..b278488f23c0968d458130c1a9ca612ff0b5db39 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWxBlackBox.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:16 $
-  Version:   $Revision: 1.12 $
+  Date:      $Date: 2008/04/21 12:43:05 $
+  Version:   $Revision: 1.13 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -540,40 +540,41 @@ namespace bbtk
                        "=> WxBlackBox::bbBackwardUpdate("
                        <<(caller?caller->GetFullName():"0")<<") ["
                        <<bbGetFullName()<<"]"<<std::endl);
-
-    if (bbGetExecuting()) 
-      {
-       bbtkWarning(bbGetFullName()<<" : Cyclic execution stopped");
-       return UPTODATE;
-      }
-    bbSetExecuting(true);
-
     // If the caller is not the connection to the output widget
     // and the output 'Widget' is connected then 
-    // we must execute the parent box
-    bool done = false;
+    // we must execute the parent box 
+    // but only one time 
+    // (this is the role of the flag UpdateTransferedToParent=
     if ( (caller==0) ||
         ((caller!=0)&&(caller->GetBlackBoxFromOutput()!="Widget"))
         )
       {
        BlackBox::OutputConnectorMapType::const_iterator i 
          = bbGetOutputConnectorMap().find("Widget") ;
-       if ( 
-           i->second->GetConnectionVector().size() != 0 ) 
+       if ( i->second->GetConnectionVector().size() != 0 )
+            
          {
            bbtkDebugMessage("Process",2,
-                            "-> Output 'Widget' connected : transfering execution to parent"
+                            "-> Output 'Widget' connected : transfering update order to parent"
                             <<std::endl);
-           
-           i->second->GetConnectionVector().front().lock()
-             ->GetBlackBoxTo()->bbExecute(false);
-           done = true;
+           if ( bbGetUpdateTransferedToParent() )          
+             {
+               bbSetUpdateTransferedToParent(false);
+               bbtkDebugMessage("Process",2,
+                                "   ... already transfered : abort"
+                                <<std::endl);
+             }
+           else 
+             {
+               bbSetUpdateTransferedToParent(true);
+               i->second->GetConnectionVector().front().lock()
+                 ->GetBlackBoxTo()->bbExecute(false);
+             }
          }
       }
     // call 'standard' BlackBox execution method
-    if (!done
+    if (!bbGetUpdateTransferedToParent()
       { 
-       bbSetExecuting(false);
        AtomicBlackBox::bbBackwardUpdate(caller);
       }
     
@@ -581,7 +582,6 @@ namespace bbtk
                        "<= WxBlackBox::bbBackwardUpdate() ["
                        <<bbGetFullName()<<"]"<<std::endl);
     
-    bbSetExecuting(false);
   }
 
   //=========================================================================
index 92d711d3bc488bbbee1ae3a4ca3629a9d2237394..619632306e42a3fc23676fef1a1f609a3ea5d6f9 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWxBlackBox.h,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:16 $
-  Version:   $Revision: 1.11 $
+  Date:      $Date: 2008/04/21 12:43:05 $
+  Version:   $Revision: 1.12 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -184,6 +184,16 @@ namespace bbtk
     /// Main processing method of the box. Overloaded to handle windows inclusion : if the output Widget is connected then the execution is transfered to the box to which it is connected (the container window must be created and displayed - this box will be also executed by the normal pipeline recursion mechanism)
     virtual void bbExecute(bool force = false);
 
+
+    /// Is set to true before transfering update to parent 
+    /// in order to not re-transfer a second time...
+    bool bbmUpdateTransferedToParent;
+
+    bool bbGetUpdateTransferedToParent() const { return bbmUpdateTransferedToParent; }
+    void bbSetUpdateTransferedToParent(bool b) 
+    { bbmUpdateTransferedToParent = b; }
+
+
   };
   //=================================================================