X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fthreadraster.cpp;h=b45875dbe71e1afb0c38ca3ebc4f9df5be316bb8;hb=a65971e957a117618b33070897f11a4116f38e1f;hp=9853117a3755abaf40efc92ca3000b0e7bf43f9f;hpb=e98a8a9d72a7b919debbbc9d1b0f237fe71c0fb3;p=ctsim.git diff --git a/src/threadraster.cpp b/src/threadraster.cpp index 9853117..b45875d 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.7 2001/03/04 04:30:45 kevin Exp $ +** $Id: threadraster.cpp,v 1.12 2001/03/07 21:18:50 kevin Exp $ ** ** 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 @@ -68,10 +68,11 @@ RasterizerSupervisorThread::Entry() RasterizerSupervisor rasterSupervisor (this, m_pPhantomView, m_iNX, m_iNY, m_iNSample, m_dViewRatio, m_strLabel.c_str()); rasterSupervisor.start(); - while (! rasterSupervisor.isDone() && ! rasterSupervisor.fail()) { + + while (! rasterSupervisor.workersDone() && ! rasterSupervisor.fail() && ! rasterSupervisor.cancelled()) { Sleep(100); - Yield(); } + if (rasterSupervisor.fail()) { wxString msg ("Error starting Rasterizer supervisor: "); @@ -82,12 +83,11 @@ RasterizerSupervisorThread::Entry() wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event } - while (! rasterSupervisor.workersDeleted()) { - Sleep(50); - rasterSupervisor.ProcessPendingEvents(); - } + if (! rasterSupervisor.cancelled()) + rasterSupervisor.onDone(); + rasterSupervisor.deleteWorkers(); - return reinterpret_cast(0); + return static_cast(0); } void @@ -112,9 +112,6 @@ RasterizerSupervisor::RasterizerSupervisor (SupervisorThread* pThread, PhantomFi for (int iThread = 0; iThread < getNumWorkers(); iThread++) { m_vecpChildImageFiles[iThread] = new ImageFile; } - - - } RasterizerSupervisor::~RasterizerSupervisor() @@ -210,18 +207,17 @@ RasterizerWorker::Entry () #endif break; } - rPhantom.convertToImagefile (*m_pImageFile, m_iNX, m_dViewRatio, m_iNSample, Trace::TRACE_NONE, - iUnit + m_iStartUnit, 1, iUnit); - wxPostEvent (m_pSupervisor, eventProgress); + rPhantom.convertToImagefile (*m_pImageFile, m_iNX, m_dViewRatio, m_iNSample, Trace::TRACE_NONE, iUnit + m_iStartUnit, 1, iUnit); + + m_pSupervisor->onWorkerUnitTick(); } - wxCommandEvent eventDone (wxEVT_COMMAND_MENU_SELECTED, BackgroundSupervisor::MSG_WORKER_THREAD_DONE); - eventDone.SetInt (m_iThread); // Send back thread# that has finished - wxPostEvent (m_pSupervisor, eventDone); + + m_pSupervisor->onWorkerDone (m_iThread); while (! TestDestroy()) Sleep(100); - return reinterpret_cast(0); + return static_cast(0); } void