X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src2%2FcreaImageIOMultiThreadImageReader.cpp;h=8a965f549b7d1448e9a456c4b26c9ad115f5484c;hb=da2cb2feea7bdf425151ea3fd71abf9b8b72c366;hp=3f4ba3ab6413f38c722ab51e41fe848cad3141e3;hpb=96ca5a0d7b7ccd6b4291160c19afd48e3207db2a;p=creaImageIO.git diff --git a/src2/creaImageIOMultiThreadImageReader.cpp b/src2/creaImageIOMultiThreadImageReader.cpp index 3f4ba3a..8a965f5 100644 --- a/src2/creaImageIOMultiThreadImageReader.cpp +++ b/src2/creaImageIOMultiThreadImageReader.cpp @@ -3,6 +3,10 @@ #include #include +#include +#ifdef _DEBUG +#define new DEBUG_NEW +#endif namespace creaImageIO { @@ -31,12 +35,22 @@ namespace creaImageIO vtkImageData* Read(const std::string& filename); + struct deleter + { + void operator()(ThreadedImageReader* p) + { + p->Delete(); + } + }; + friend struct deleter; + private: ImageReader mReader; MultiThreadImageReader* mMultiThreadImageReader; }; + //===================================================================== @@ -50,13 +64,15 @@ namespace creaImageIO // std::cout << "#### MultiThreadImageReader::MultiThreadImageReader(" // << " #threads= " << number_of_threads <<" )"< t(new ThreadedImageReader(this), ThreadedImageReader::deleter()); mThreadedImageReaderList.push_back(t); std::cout << " ===> Thread "<IsAlive()) { - (*i)->Delete(); + (*i).reset(); + //(*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); @@ -159,6 +177,7 @@ namespace creaImageIO delete j->first; } mImages.clear(); + mDone = true; } //===================================================================== @@ -169,6 +188,7 @@ namespace creaImageIO // < Total mem = "<Index()>=0) @@ -499,8 +516,6 @@ namespace creaImageIO // std::cout << "delete ok."<