X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fbackgroundsupr.cpp;h=7ec34080bed745d297c99197554e8a16497c4ad1;hb=fbe99ce7041eb409981b1fd8e269827daf4ed168;hp=9eb806fda46d69f13f538ad5159222cdfed51f68;hpb=cd93aebb4dec4e0ae88d53f131c2320ae92d0cab;p=ctsim.git diff --git a/src/backgroundsupr.cpp b/src/backgroundsupr.cpp index 9eb806f..7ec3408 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.14 2001/03/05 19:14:40 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 @@ -40,6 +40,8 @@ #ifdef HAVE_WXTHREADS +#define USE_BKGMGR 1 + //////////////////////////////////////////////////////////////////////////// // // Class BackgroundSupervisor -- An event handler run by a SupervisorThread @@ -52,10 +54,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 +70,13 @@ 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); - } +#ifdef USE_BKGMGR + wxCommandEvent doneEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_REMOVE); + doneEvent.SetClientData (this); + wxPostEvent (theApp->getBackgroundManager(), doneEvent); +#endif - while (m_bBackgroundTaskAdded) { - m_pMyThread->Sleep(50); - } + m_pDocument->removeBackgroundSupervisor (this); delete m_pTimer; } @@ -133,13 +132,16 @@ BackgroundSupervisor::start() std::string strLabel (m_strProcessTitle); strLabel += " "; strLabel += m_pParentFrame->GetTitle(); + +#ifdef USE_BKGMGR wxCommandEvent addTaskEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_ADD); addTaskEvent.SetString (strLabel.c_str()); addTaskEvent.SetInt (m_iTotalUnits); addTaskEvent.SetClientData (this); wxPostEvent (theApp->getBackgroundManager(), addTaskEvent); - wxPostEvent (m_pDocument, addTaskEvent); - m_bBackgroundTaskAdded = true; +#endif + + m_pDocument->addBackgroundSupervisor (this); m_iRunning = m_iNumThreads; m_iUnitsDone = 0; @@ -157,12 +159,6 @@ BackgroundSupervisor::onCancel() m_bDone = true; } -void -BackgroundSupervisor::onAckDocumentRemove() -{ - m_bBackgroundTaskAdded = false; -} - void BackgroundSupervisor::onWorkerUnitTick () @@ -174,10 +170,12 @@ BackgroundSupervisor::onWorkerUnitTick () *theApp->getLog() << "Units done: " << static_cast(m_iUnitsDone) <<"\n"; #endif +#ifdef USE_BKGMGR wxCommandEvent addTaskEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_UNIT_TICK); addTaskEvent.SetInt (m_iUnitsDone - 1); addTaskEvent.SetClientData (this); wxPostEvent (theApp->getBackgroundManager(), addTaskEvent); +#endif } void