X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fbackgroundsupr.cpp;h=c4720770bdc310051a4cd6da8fa4e212881d5d2a;hp=8107a9e0b1b280d67091c2eb391f5be2c690eb74;hb=f7ee98f7d964ed361068179f0e7ea4475ed1abdf;hpb=999a754d1519a49ca062ee87b22bf601c1ee9f21 diff --git a/src/backgroundsupr.cpp b/src/backgroundsupr.cpp index 8107a9e..c472077 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.19 2001/03/11 06:34:37 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 @@ -31,6 +31,9 @@ #include "wx/wx.h" #endif +// pragma line required for Fedora 4 and wxWin 2.4.2 +#pragma implementation "timer.h" + #include "ct.h" #include "ctsim.h" #include "docs.h" @@ -54,8 +57,8 @@ END_EVENT_TABLE() -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), +BackgroundSupervisor::BackgroundSupervisor (SupervisorThread* pMyThread, wxWindow* pParentFrame, BackgroundProcessingDocument* pDocument, wxChar 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_bWorkersDeleted(false), m_bBackgroundManagerAdded(false) { @@ -82,8 +85,8 @@ BackgroundSupervisor::deleteWorkers() if (m_bWorkersDeleted) return; - for (int i = 0; i < m_iNumThreads; i++) - if (m_vecpThreads[i]) + for (int i = 0; i < m_iNumThreads; i++) + if (m_vecpThreads[i]) m_vecpThreads[i]->Delete(); // send Destroy message to workers #ifdef USE_BKGMGR @@ -92,9 +95,9 @@ BackgroundSupervisor::deleteWorkers() wxPostEvent (theApp->getBackgroundManager(), doneEvent); #endif - while (m_iRunning > 0 || m_bBackgroundManagerAdded) + while (m_iRunning > 0 || m_bBackgroundManagerAdded) m_pMyThread->Sleep(50); - + m_bWorkersDeleted = true; } @@ -117,12 +120,12 @@ BackgroundSupervisor::start() m_vecpThreads[iThread] = createWorker (iThread, iStartUnit, iNumUnits); if (! m_vecpThreads[iThread]) { m_bFail = true; - m_strFailMessage = "createWorker returned NULL [BackgroundSupervisor]"; + m_strFailMessage = _T("createWorker returned NULL [BackgroundSupervisor]"); break; } if (m_vecpThreads[iThread]->Create () != wxTHREAD_NO_ERROR) { m_bFail = true; - m_strFailMessage = "Thread creation failed [BackgroundSupervisor]"; + m_strFailMessage = _T("Thread creation failed [BackgroundSupervisor]"); break; } m_vecpThreads[iThread]->SetPriority (40); @@ -132,14 +135,14 @@ BackgroundSupervisor::start() return false; m_pTimer = new Timer; - - std::string strLabel (m_strProcessTitle); - strLabel += " "; - strLabel += m_pParentFrame->GetTitle(); + + wxString strLabel (m_strProcessTitle); + strLabel += _T(" "); + strLabel += dynamic_cast(m_pParentFrame)->GetTitle(); #ifdef USE_BKGMGR wxCommandEvent addTaskEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_ADD); - addTaskEvent.SetString (strLabel.c_str()); + addTaskEvent.SetString (strLabel); addTaskEvent.SetInt (m_iTotalUnits); addTaskEvent.SetClientData (this); wxPostEvent (theApp->getBackgroundManager(), addTaskEvent); @@ -153,7 +156,7 @@ BackgroundSupervisor::start() for (int i = 0; i < m_iNumThreads; i++) m_vecpThreads[i]->Run(); - + return true; } @@ -169,7 +172,7 @@ void BackgroundSupervisor::onWorkerUnitTick () { ++m_iUnitsDone; - + #ifdef USE_BKGMGR wxCommandEvent addTaskEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_UNIT_TICK); addTaskEvent.SetInt (m_iUnitsDone - 1); @@ -181,15 +184,15 @@ BackgroundSupervisor::onWorkerUnitTick () void BackgroundSupervisor::onWorkerDone (int iThread) { - wxCriticalSection critsectDone; - critsectDone.Enter(); + wxCriticalSection critsectDone; + critsectDone.Enter(); m_iRunning--; #ifdef DEBUG if (theApp->getVerboseLogging()) { wxString msg; - msg.Printf("Background Supervisor: Thread finished. Remaining threads: %d\n", m_iRunning); + msg.Printf(_T("Background Supervisor: Thread finished. Remaining threads: %d\n"), m_iRunning); wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event @@ -200,11 +203,11 @@ BackgroundSupervisor::onWorkerDone (int iThread) } void -BackgroundSupervisor::onWorkerFail (int iThread, std::string strFailMessage) +BackgroundSupervisor::onWorkerFail (int iThread, const wxString& strFailMessage) { m_iRunning--; wxCommandEvent eventLog( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); - eventLog.SetString( strFailMessage.c_str() ); + eventLog.SetString( strFailMessage ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event onCancel();