r607: *** empty log message ***
[ctsim.git] / src / backgroundsupr.cpp
index 9eb806fda46d69f13f538ad5159222cdfed51f68..561009c8b97a368ae41aaf2eb3eeb79abab415f5 100644 (file)
@@ -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 ()