]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkFactory.cxx
BUG MACOS
[bbtk.git] / kernel / src / bbtkFactory.cxx
index 4d824a9f0c3221da727a2626074d17f6863fcae6..ad64151ba1696592f5611f2095d42125f86b6155 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkFactory.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/10/17 08:18:13 $
-  Version:   $Revision: 1.40 $
+  Date:      $Date: 2009/03/30 15:22:51 $
+  Version:   $Revision: 1.42 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -39,6 +39,7 @@
 #include "bbtkConnection.h"
 #include "bbtkConfigurationFile.h"
 #include "bbtkUtilities.h"
+#include "bbtkConfigurationFile.h"
 
 #include <sys/stat.h> // for struct stat stFileInfo
 
@@ -324,11 +325,31 @@ namespace bbtk
   void Factory::CloseAllPackages()
   {
     bbtkDebugMessageInc("Kernel",7,"Factory::CloseAllPackages()"<<std::endl);
-    while (mPackageMap.begin() != mPackageMap.end())
-      {
-        PackageMapType::iterator i = mPackageMap.begin();
-        ClosePackage(i);
-      }
+    
+    std::vector< Package::WeakPointer > mAlive;  
+    do {
+      mAlive.clear();  
+      while (mPackageMap.begin() != mPackageMap.end())
+       {
+         PackageMapType::iterator i = mPackageMap.begin();
+         Package::WeakPointer p = i->second;
+         ClosePackage(i);
+         if (p.lock()) mAlive.push_back(p);
+       }
+      std::vector< Package::WeakPointer >::iterator i;
+      for (i=mAlive.begin();i!=mAlive.end();++i)
+       {
+         // If not dead : reinsert
+         if (i->lock())
+           {
+             bbtkDebugMessage("Kernel",7,"Package "<<i->lock()->GetName()
+                              <<" still alive"<<std::endl);
+             // InsertPackage(i->lock());
+           }
+       }      
+    }
+    while (mPackageMap.size()>0);
+
     bbtkDebugDecTab("Kernel",7);
   }
   //===================================================================
@@ -358,9 +379,10 @@ namespace bbtk
      // remove the entry in the map
      mPackageMap.erase(i);
      // Release the package if not already destroyed
-     if (p.lock()) Package::Release(p);
-
-
+     if (p.lock()) 
+       {
+        Package::Release(p);
+       }
      bbtkDebugDecTab("Kernel",7);
   }
   //===================================================================
@@ -990,7 +1012,9 @@ namespace bbtk
            s << "&nbsp;&nbsp;-&nbsp;&nbsp;\n"; 
 
            s << "<a name=\"doxygen\"></a>\n"; 
-           s << "<a href=..\\doxygen\\" << ii->first << "/main.html>(Doxygen documentation of the source)</a>\n"; 
+//EED 26Mars2009                 
+               std::string bin_path = bbtk::ConfigurationFile::GetInstance().Get_bin_path();
+           s << "<a href=" << bin_path <<"/../share/bbtk/doc/doxygen/" << ii->first << "/main.html>(Doxygen documentation of the source)</a>\n"; 
          }
        else 
          {