X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fthreadraster.cpp;h=df3747dd54a1d5db55807fdf745fd6a4418be69c;hp=3b90791c4b2275bfd6c4910b103fdb5f97c540c6;hb=f7ee98f7d964ed361068179f0e7ea4475ed1abdf;hpb=cd93aebb4dec4e0ae88d53f131c2320ae92d0cab diff --git a/src/threadraster.cpp b/src/threadraster.cpp index 3b90791..df3747d 100644 --- a/src/threadraster.cpp +++ b/src/threadraster.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2001 Kevin Rosenberg ** -** $Id: threadraster.cpp,v 1.8 2001/03/04 22:30:20 kevin Exp $ +** $Id$ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -56,42 +56,38 @@ // ///////////////////////////////////////////////////////////////////// -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) +RasterizerSupervisorThread::RasterizerSupervisorThread (PhantomFileView* pProjView, int iNX, int iNY, + int iNSample, double dViewRatio, wxChar const* pszLabel) + : SupervisorThread(), m_pPhantomView(pProjView), m_iNX(iNX), m_iNY(iNY), m_iNSample(iNSample), m_dViewRatio(dViewRatio), m_strLabel(pszLabel) { } wxThread::ExitCode RasterizerSupervisorThread::Entry() { - RasterizerSupervisor* pRasterSupervisor = new RasterizerSupervisor (this, m_pPhantomView, m_iNX, m_iNY, m_iNSample, m_dViewRatio, m_strLabel.c_str()); + RasterizerSupervisor rasterSupervisor (this, m_pPhantomView, m_iNX, m_iNY, m_iNSample, m_dViewRatio, m_strLabel); - pRasterSupervisor->start(); + rasterSupervisor.start(); - while (! pRasterSupervisor->workersDone() && ! pRasterSupervisor->fail() && ! pRasterSupervisor->cancelled()) { + while (! rasterSupervisor.workersDone() && ! rasterSupervisor.fail() && ! rasterSupervisor.cancelled()) { Sleep(100); } - if (pRasterSupervisor->fail()) + if (rasterSupervisor.fail()) { - wxString msg ("Error starting Rasterizer supervisor: "); - msg += pRasterSupervisor->getFailMessage().c_str(); - msg += "\n"; + wxString msg (_T("Error starting Rasterizer supervisor: ")); + msg += rasterSupervisor.getFailMessage(); + msg += _T("\n"); wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event } - if (! pRasterSupervisor->cancelled()) - pRasterSupervisor->onDone(); - pRasterSupervisor->deleteWorkers(); - while (! pRasterSupervisor->workersDeleted()) { - Sleep(50); - } - delete pRasterSupervisor; + if (! rasterSupervisor.cancelled()) + rasterSupervisor.onDone(); + rasterSupervisor.deleteWorkers(); - return reinterpret_cast(0); + return static_cast(0); } void @@ -106,11 +102,11 @@ RasterizerSupervisorThread::OnExit() // ///////////////////////////////////////////////////////////////////// -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_iNX(iNX), m_iNY(iNY), m_iNSample(iNSample), m_dViewRatio(dViewRatio), m_pszLabel(pszLabel) +RasterizerSupervisor::RasterizerSupervisor (SupervisorThread* pThread, PhantomFileView* pPhantomView, int iNX, int iNY, + int iNSample, double dViewRatio, wxChar const* pszLabel) + : BackgroundSupervisor (pThread, pPhantomView->GetFrame(), pPhantomView->GetDocument(), _T("Rasterizing"), iNX), + m_pPhantomView(pPhantomView), m_pPhantomDoc(pPhantomView->GetDocument()), + m_iNX(iNX), m_iNY(iNY), m_iNSample(iNSample), m_dViewRatio(dViewRatio), m_strLabel(pszLabel) { m_vecpChildImageFiles.reserve (getNumWorkers()); for (int iThread = 0; iThread < getNumWorkers(); iThread++) { @@ -127,11 +123,11 @@ RasterizerSupervisor::~RasterizerSupervisor() BackgroundWorkerThread* 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); + 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; + return pThread; } void @@ -141,18 +137,18 @@ RasterizerSupervisor::onDone() wxCriticalSectionLocker critsect (doneSection); ImageFile* pImageFile = getImageFile(); - pImageFile->labelAdd (m_pszLabel, getTimerEnd()); + pImageFile->labelAdd (m_strLabel.mb_str(wxConvUTF8), getTimerEnd()); wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); - wxString msg (m_pszLabel); - msg += "\n"; + wxString msg (m_strLabel); + msg += _T("\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(); } @@ -203,17 +199,16 @@ RasterizerWorker::Entry () #ifdef DEBUG if (theApp->getVerboseLogging()) { wxString msg; - msg.Printf("Worker thread: Received destroy message at work unit #%d\n", iUnit); + msg.Printf(_T("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; } rPhantom.convertToImagefile (*m_pImageFile, m_iNX, m_dViewRatio, m_iNSample, Trace::TRACE_NONE, iUnit + m_iStartUnit, 1, iUnit); - - m_pSupervisor->onWorkerUnitTick(); + m_pSupervisor->onWorkerUnitTick(); } m_pSupervisor->onWorkerDone (m_iThread); @@ -221,7 +216,7 @@ RasterizerWorker::Entry () while (! TestDestroy()) Sleep(100); - return reinterpret_cast(0); + return static_cast(0); } void