X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOMultiThreadImageReader.cpp;h=9645f09f163337bb7a217dc95e08de406cf57c40;hb=6ce1377c642f91e9b173b8a5440543eb5320fcd5;hp=7daf7403c9429406558d9fe1955ec48a4ee320c6;hpb=a67d921cdc10d438852b48c2985f14d91320e016;p=creaImageIO.git diff --git a/src2/creaImageIOMultiThreadImageReader.cpp b/src2/creaImageIOMultiThreadImageReader.cpp index 7daf740..9645f09 100644 --- a/src2/creaImageIOMultiThreadImageReader.cpp +++ b/src2/creaImageIOMultiThreadImageReader.cpp @@ -31,12 +31,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; }; + //===================================================================== @@ -53,11 +63,11 @@ namespace creaImageIO // Create the threads for (int i=0; i t(new ThreadedImageReader(this)); + //ThreadedImageReader* t = new ThreadedImageReader(this); + boost::shared_ptr 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); @@ -200,7 +211,7 @@ namespace creaImageIO int priority ) { wxMutexLocker lock(GetMultiThreadImageReaderUserMutex()); //mMutex); - + if (mNumberOfThreadedReadersRunning==0) // if (mThreadedImageReaderList.size()==0) { @@ -229,7 +240,6 @@ namespace creaImageIO return; } - ImageToLoad itl(user,filename); ImageMapType::iterator i = mImages.find(&itl); if (i!=mImages.end()) @@ -470,7 +480,6 @@ namespace creaImageIO GimmickMessage(5," ==> Total mem = "<Index()>=0) @@ -501,8 +509,6 @@ namespace creaImageIO // std::cout << "delete ok."<