]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOMultiThreadImageReader.cpp
move directory
[creaImageIO.git] / src2 / creaImageIOMultiThreadImageReader.cpp
index 5871d8044774da930d67e3d9d033d8cb75bdd175..3ee50de9a2e558912cfe0d8ac0e489e2cc1cd209 100644 (file)
@@ -3,7 +3,10 @@
 #include <wx/utils.h>
 #include <creaImageIOSystem.h>
 
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
 namespace creaImageIO
 {
 
@@ -61,6 +64,7 @@ namespace creaImageIO
     //    std::cout << "#### MultiThreadImageReader::MultiThreadImageReader("
     //       << " #threads= " << number_of_threads <<" )"<<std::endl;
 
+         mDone = false;
     // Create the threads
     for (int i=0; i<number_of_threads; i++) 
       {
@@ -124,6 +128,7 @@ namespace creaImageIO
 //                 std::cout << "#### MultiThreadImageReader::Stop()"
 //           <<std::endl;
   //  std::cout << "Sending stop order to the threads..."<<std::endl;
+         if (mDone) return;
 
     ThreadedImageReaderListType::iterator i;
     for (i =mThreadedImageReaderList.begin();
@@ -132,12 +137,12 @@ namespace creaImageIO
       { std::cout << "  ===> Thread "<<(*i)->GetCurrentId()
                              <<" successfully stopped"<< std::endl;
                  if((*i)->IsAlive())
-                 {
+                 {(*i)->Pause();
                          (*i).reset();
-                        //(*i)->Delete();
+                        //                       (*i)->Delete();
                  }
       }
//  mThreadedImageReaderList.clear();
+   mThreadedImageReaderList.clear();
     // Wait a little to be sure that all threads have stopped
     // A better way to do this ?
     //    wxMilliSleep(1000);
@@ -172,6 +177,7 @@ namespace creaImageIO
        delete j->first;
       }
     mImages.clear();
+       mDone = true;
   }
   //=====================================================================