r7061: initial property settings
[ctsim.git] / src / backgroundsupr.h
index 2ee7db6662ebd652b49a5cf94f9dd2c94be5af2a..1f67178721cdadc974779b67152e3736448c2aff 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2001 Kevin Rosenberg
 **
-**  $Id: backgroundsupr.h,v 1.8 2001/03/04 22:30:19 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
@@ -46,36 +46,35 @@ public:
 };
 
 
-// Pure virtual class for BackgroundSupervisor that can communication
-// with BackgroundManager via messages
+// Pure virtual class for BackgroundSupervisor that can communication with BackgroundManager via messages
 class BackgroundWorkerThread;
+class BackgroundProcessingDocument;
 
 class BackgroundSupervisor : public wxEvtHandler {
 private:
   DECLARE_DYNAMIC_CLASS(BackgroundSupervisor)
-      
+
   SupervisorThread* m_pMyThread;
-  wxFrame* m_pParentFrame;
-  wxDocument* m_pDocument;
+  wxWindow* m_pParentFrame;
+  BackgroundProcessingDocument* m_pDocument;
   const std::string m_strProcessTitle;
   
   const unsigned int m_iTotalUnits;
   int m_iNumThreads;
-  bool m_bDone;
+  volatile bool m_bDone;
   volatile bool m_bFail;
   std::string m_strFailMessage;
-  bool m_bCancelled;
+  volatile bool m_bCancelled;
   volatile int m_iRunning;
-  unsigned int m_iUnitsDone;
+  volatile unsigned int m_iUnitsDone;
   Timer* m_pTimer;
-  bool m_bBackgroundTaskAdded;
-  bool m_bWorkersDeleted;
+  volatile bool m_bWorkersDeleted;
+  volatile bool m_bBackgroundManagerAdded;
 
   typedef std::vector<BackgroundWorkerThread*> ThreadContainer;
   ThreadContainer m_vecpThreads;
   wxCriticalSection m_critsectThreads;
 
-
 public:
   enum {
     MSG_BACKGROUND_SUPERVISOR_ADD = 7500, // sends to BackgroundManager and Document
@@ -89,7 +88,7 @@ public:
     MSG_WORKER_THREAD_FAIL = 7507,   // sent by workers when they fail
   };
 
-  BackgroundSupervisor (SupervisorThread* pMyThread, wxFrame* pParentFrame, wxDocument* pDocument, const char* const pszProcessTitle, 
+  BackgroundSupervisor (SupervisorThread* pMyThread, wxWindow* pParentFrame, BackgroundProcessingDocument* pDocument, const char* const pszProcessTitle, 
     int iTotalUnits);
 
   BackgroundSupervisor ()
@@ -105,13 +104,13 @@ public:
   virtual void onDone() {};
   
   virtual void onCancel();
-  virtual void onAckDocumentRemove();
 
   virtual void onWorkerFail(int iThread, std::string strFailMessage);
   virtual void onWorkerUnitTick();
   virtual void onWorkerDone(int iThread);
 
   void deleteWorkers();
+  void ackRemoveBackgroundManager();
   bool workersDone() const { return m_iRunning == 0; }
   bool workersDeleted() const { return m_bWorkersDeleted; }
   bool isDone() const {return m_bDone;}