X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fthreadraster.cpp;h=7aec3390eb9902f5ae83eb14cd3a35a3633aaf9c;hp=d3a67a913590ffe04c96d3d47fa46aab5b9ed432;hb=1a050c98763fbbc0662731b0b76953acede6f5d7;hpb=c8b19dfaffba9f06d8b6c40cb1bb83a8964867f7 diff --git a/src/threadraster.cpp b/src/threadraster.cpp index d3a67a9..7aec339 100644 --- a/src/threadraster.cpp +++ b/src/threadraster.cpp @@ -56,7 +56,7 @@ // ///////////////////////////////////////////////////////////////////// -RasterizerSupervisorThread::RasterizerSupervisorThread (PhantomFileView* pProjView, int iNX, int iNY, +RasterizerSupervisorThread::RasterizerSupervisorThread (PhantomFileView* pProjView, int iNX, int iNY, int iNSample, double dViewRatio, const char* const pszLabel) : SupervisorThread(), m_pPhantomView(pProjView), m_iNX(iNX), m_iNY(iNY), m_iNSample(iNSample), m_dViewRatio(dViewRatio), m_strLabel(pszLabel) { @@ -66,13 +66,13 @@ wxThread::ExitCode RasterizerSupervisorThread::Entry() { RasterizerSupervisor rasterSupervisor (this, m_pPhantomView, m_iNX, m_iNY, m_iNSample, m_dViewRatio, m_strLabel.c_str()); - + rasterSupervisor.start(); - + while (! rasterSupervisor.workersDone() && ! rasterSupervisor.fail() && ! rasterSupervisor.cancelled()) { Sleep(100); } - + if (rasterSupervisor.fail()) { wxString msg ("Error starting Rasterizer supervisor: "); @@ -82,11 +82,11 @@ RasterizerSupervisorThread::Entry() eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event } - + if (! rasterSupervisor.cancelled()) rasterSupervisor.onDone(); rasterSupervisor.deleteWorkers(); - + return static_cast(0); } @@ -102,10 +102,10 @@ RasterizerSupervisorThread::OnExit() // ///////////////////////////////////////////////////////////////////// -RasterizerSupervisor::RasterizerSupervisor (SupervisorThread* pThread, PhantomFileView* pPhantomView, int iNX, int iNY, +RasterizerSupervisor::RasterizerSupervisor (SupervisorThread* pThread, PhantomFileView* pPhantomView, int iNX, int iNY, int iNSample, double dViewRatio, const char* const pszLabel) : BackgroundSupervisor (pThread, pPhantomView->GetFrame(), pPhantomView->GetDocument(), "Rasterizing", iNX), - m_pPhantomView(pPhantomView), m_pPhantomDoc(pPhantomView->GetDocument()), + m_pPhantomView(pPhantomView), m_pPhantomDoc(pPhantomView->GetDocument()), m_iNX(iNX), m_iNY(iNY), m_iNSample(iNSample), m_dViewRatio(dViewRatio), m_pszLabel(pszLabel) { m_vecpChildImageFiles.reserve (getNumWorkers()); @@ -126,7 +126,7 @@ RasterizerSupervisor::createWorker (int iThread, int iStartUnit, int iNumUnits) RasterizerWorker* pThread = new RasterizerWorker (this, iThread, iStartUnit, iNumUnits); m_vecpChildImageFiles[iThread]->setArraySize (iNumUnits, m_iNY); pThread->SetParameters (m_pPhantomView, m_vecpChildImageFiles[iThread], m_iNX, m_iNY, m_iNSample, m_dViewRatio); - + return pThread; } @@ -135,20 +135,20 @@ RasterizerSupervisor::onDone() { wxCriticalSection doneSection; wxCriticalSectionLocker critsect (doneSection); - + ImageFile* pImageFile = getImageFile(); pImageFile->labelAdd (m_pszLabel, getTimerEnd()); - + wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); wxString msg (m_pszLabel); msg += "\n"; eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event - + wxCommandEvent newImageEvent (wxEVT_COMMAND_MENU_SELECTED, NEW_IMAGEFILE_EVENT); newImageEvent.SetClientData (pImageFile); wxPostEvent (theApp->getMainFrame(), newImageEvent); - + setDone(); } @@ -157,9 +157,9 @@ ImageFile* RasterizerSupervisor::getImageFile() { ImageFile* pImageFile = new ImageFile (m_iNX, m_iNY); - + size_t iColSize = sizeof(ImageFileValue) * m_iNY; - + ImageFileArray globalArray = pImageFile->getArray(); int iGlobalCol = 0; for (int iw = 0; iw < getNumWorkers(); iw++) { @@ -199,10 +199,10 @@ RasterizerWorker::Entry () #ifdef DEBUG if (theApp->getVerboseLogging()) { wxString msg; - msg.Printf("Worker thread: Received destroy message at work unit #%d\n", iUnit); + msg.Printf("Worker thread: Received destroy message at work unit #%d\n", iUnit); wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); event.SetString( msg ); - wxPostEvent( theApp->getMainFrame(), event ); + wxPostEvent( theApp->getMainFrame(), event ); } #endif break; @@ -210,12 +210,12 @@ RasterizerWorker::Entry () rPhantom.convertToImagefile (*m_pImageFile, m_iNX, m_dViewRatio, m_iNSample, Trace::TRACE_NONE, iUnit + m_iStartUnit, 1, iUnit); m_pSupervisor->onWorkerUnitTick(); } - + m_pSupervisor->onWorkerDone (m_iThread); - + while (! TestDestroy()) Sleep(100); - + return static_cast(0); }