#include <wx/utils.h>
#include <creaImageIOSystem.h>
+ #include <creaImageIODicomImageReader.h>
+
+
#include <creaImageIOGimmick.h>
#ifdef _DEBUG
#define new DEBUG_NEW
}
//=====================================================================
+ class wxThreadEED2
+ {
+ public:
+ void Delete() { printf("EED wxThreadEED2::Delete() \n"); }
+ int Run() { printf("EED wxThreadEED2::Run() \n"); return 0;}
+ void Pause() { printf("EED wxThreadEED2::Pause() \n"); }
+ void Create() { printf("EED wxThreadEED2::Create() \n"); }
+ bool IsAlive() { printf("EED wxThreadEED2::IsAlive() \n"); return false; }
+ bool TestDestroy() { printf("EED wxThreadEED2::TestDestroy() \n"); return false; }
+ int GetCurrentId() { printf("EED wxThreadEED2::GetCurrentId() \n"); return -999; }
+ };
+
//=====================================================================
- class ThreadedImageReader: public wxThread
+//EED 2018-08-20
+// class ThreadedImageReader: public wxThread
+ class ThreadedImageReader: public wxThreadEED2
{
public:
ThreadedImageReader(MultiThreadImageReader* tir) :
//=====================================================================
MultiThreadImageReader::MultiThreadImageReader(int number_of_threads)
: //mDoNotSignal(false),
- mReader(0),
+ mReader(NULL),
mTotalMem(0),
mTotalMemMax(1000000)
{
mDone = false;
// Create the threads
-printf("EED MultiThreadImageReader::MultiThreadImageReader %d \n", number_of_threads);
-
for (int i=0; i<number_of_threads; i++)
- {
- //ThreadedImageReader* t = new ThreadedImageReader(this);
- boost::shared_ptr<ThreadedImageReader> t(new ThreadedImageReader(this), ThreadedImageReader::deleter());
- mThreadedImageReaderList.push_back(t);
- std::cout << " ===> Thread "<<i
- <<" successfully added"<< std::endl;
- }
+ {
+ //ThreadedImageReader* t = new ThreadedImageReader(this);
+ boost::shared_ptr<ThreadedImageReader> t(new ThreadedImageReader(this), ThreadedImageReader::deleter());
+ mThreadedImageReaderList.push_back(t);
+ std::cout << " ===> Thread "<<i <<" successfully added"<< std::endl;
+ } // for
mNumberOfThreadedReadersRunning = 0;
// Init the queue
mQueue.set(mComparator);
//=====================================================================
bool MultiThreadImageReader::Start()
{
-printf("EED MultiThreadImageReader::Start Start\n");
// std::cout << "#### MultiThreadImageReader::Start()"
// <<std::endl;
if (mNumberOfThreadedReadersRunning > 0) return true;
wxMutexLocker locker(GetMultiThreadImageReaderUserMutex());
// std::cout << "EO Start : #Threads running = "
// << mNumberOfThreadedReadersRunning<<std::endl;
-printf("EED MultiThreadImageReader::Start Start\n");
return true;
}
//=====================================================================
//=====================================================================
void MultiThreadImageReader::Stop()
{
-printf("EED MultiThreadImageReader::Stop Start\n");
// std::cout << "#### MultiThreadImageReader::Stop()"
// <<std::endl;
// std::cout << "Sending stop order to the threads..."<<std::endl;
while (true);
// std::cout << "All threads stopped : OK "<<std::endl;
- ImageMapType::iterator j;
- for (j =mImages.begin(); j!=mImages.end(); ++j)
- {
- delete j->first;
- } //for
- mImages.clear();
+
+ CleanMImagesMap();
+
mDone = true;
-printf("EED MultiThreadImageReader::Stop End\n");
+
}
//=====================================================================
+
+ void MultiThreadImageReader::CleanMImagesMap()
+ {
+ ImageMapType::iterator j;
+ for (j=mImages.begin(); j!=mImages.end(); ++j)
+ {
+ delete j->first;
+ } //for
+ mImages.clear();
+ }
+
//=====================================================================
MultiThreadImageReader::~MultiThreadImageReader()
{
-printf("EED MultiThreadImageReader::~MultiThreadImageReader Start\n");
// std::cout << "#### MultiThreadImageReader::~MultiThreadImageReader()"
// <<std::endl;
Stop();
if (mReader) delete mReader;
mThreadedImageReaderList.clear();
-printf("EED MultiThreadImageReader::~MultiThreadImageReader End\n");
+
+ CleanMImagesMap();
+
+/*
+ ImageMapType::iterator it;
+ for (it=mImages.begin() ; it!=mImages.end(); it++)
+ {
+ printf("MultiThreadImageReader::~MultiThreadImageReader %s ", it.first->GetFilename() );
+ } // for it
+*/
+
}
//=====================================================================
// if (mNumberOfThreadedReadersRunning==0)
// if (mThreadedImageReaderList.size()==0)
if (true)
- {
+ {
ImageToLoad itl(this,filename);
ImageMapType::iterator i = mImages.find(&itl);
if (i!=mImages.end())
- {
- ImageToLoadPtr pitl = const_cast<ImageToLoadPtr>(i->first);
- // Already inserted
- if (pitl->GetImage() != 0)
- {
- // Already read
- UpdateUnloadPriority(pitl,
- GetMaximalPriorityWithoutLocking()+1);
- return pitl->GetImage();
- }
- }
+ {
+ ImageToLoadPtr pitl = const_cast<ImageToLoadPtr>(i->first);
+ // Already inserted
+ if (pitl->GetImage() != NULL)
+ {
+ // Already read
+ UpdateUnloadPriority( pitl, GetMaximalPriorityWithoutLocking()+1 );
+ return pitl->GetImage();
+ } // if pitl->GetImage()
+ } // if i
+
ImageToLoadPtr pitl = new ImageToLoad(this,filename,0);
- mImages[pitl] = 0;
- pitl->SetImage(mReader->ReadImage(filename));
- UpdateUnloadPriority(pitl,
- GetMaximalPriorityWithoutLocking()+1);
+ mImages[pitl] = NULL;
+ pitl->SetImage( mReader->ReadImage(filename) );
+ UpdateUnloadPriority( pitl, GetMaximalPriorityWithoutLocking()+1 );
return pitl->GetImage();
- }
-
+ } // if true
+
/*
mRequestedFilename = filename;
mRequestedImage = 0;
while (true);
//
*/
+ printf("EED MultiThreadImageReader::GetImage END\n");
+
}
//=====================================================================