X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fbackgroundsupr.cpp;fp=src%2Fbackgroundsupr.cpp;h=561009c8b97a368ae41aaf2eb3eeb79abab415f5;hp=9eb806fda46d69f13f538ad5159222cdfed51f68;hb=d77c9d135405e077047ef3426a54470c144cdd34;hpb=793b8154fdc069e43a939852657e89847d01ee77 diff --git a/src/backgroundsupr.cpp b/src/backgroundsupr.cpp index 9eb806f..561009c 100644 --- a/src/backgroundsupr.cpp +++ b/src/backgroundsupr.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2001 Kevin Rosenberg ** -** $Id: backgroundsupr.cpp,v 1.12 2001/03/04 22:30:19 kevin Exp $ +** $Id: backgroundsupr.cpp,v 1.13 2001/03/05 17:26:46 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 @@ -52,10 +52,10 @@ END_EVENT_TABLE() -BackgroundSupervisor::BackgroundSupervisor (SupervisorThread* pMyThread, wxFrame* pParentFrame, wxDocument* pDocument, const char* const pszProcessTitle, int iTotalUnits) +BackgroundSupervisor::BackgroundSupervisor (SupervisorThread* pMyThread, wxFrame* pParentFrame, BackgroundProcessingDocument* pDocument, const char* const pszProcessTitle, int iTotalUnits) : wxEvtHandler(), m_pMyThread(pMyThread), m_pParentFrame(pParentFrame), m_pDocument(pDocument), m_strProcessTitle(pszProcessTitle), m_iTotalUnits(iTotalUnits), m_iNumThreads(0), m_bDone(false), m_bFail(false), m_bCancelled(false), m_iRunning(0), - m_pTimer(NULL), m_bBackgroundTaskAdded(false), m_bWorkersDeleted(false) + m_pTimer(NULL), m_bWorkersDeleted(false) { m_iNumThreads = theApp->getNumberCPU(); // ++m_iNumThreads; @@ -68,16 +68,11 @@ BackgroundSupervisor::BackgroundSupervisor (SupervisorThread* pMyThread, wxFrame BackgroundSupervisor::~BackgroundSupervisor() { - if (m_bBackgroundTaskAdded) { - wxCommandEvent doneEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_REMOVE); - doneEvent.SetClientData (this); - wxPostEvent (theApp->getBackgroundManager(), doneEvent); - wxPostEvent (m_pDocument, doneEvent); - } + wxCommandEvent doneEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_REMOVE); + doneEvent.SetClientData (this); + wxPostEvent (theApp->getBackgroundManager(), doneEvent); - while (m_bBackgroundTaskAdded) { - m_pMyThread->Sleep(50); - } + m_pDocument->removeBackgroundSupervisor (this); delete m_pTimer; } @@ -138,8 +133,8 @@ BackgroundSupervisor::start() addTaskEvent.SetInt (m_iTotalUnits); addTaskEvent.SetClientData (this); wxPostEvent (theApp->getBackgroundManager(), addTaskEvent); - wxPostEvent (m_pDocument, addTaskEvent); - m_bBackgroundTaskAdded = true; + + m_pDocument->addBackgroundSupervisor (this); m_iRunning = m_iNumThreads; m_iUnitsDone = 0; @@ -157,12 +152,6 @@ BackgroundSupervisor::onCancel() m_bDone = true; } -void -BackgroundSupervisor::onAckDocumentRemove() -{ - m_bBackgroundTaskAdded = false; -} - void BackgroundSupervisor::onWorkerUnitTick ()