bool CBOINCClientManager::AutoRestart() { double timeNow, timeDiff; if (IsBOINCCoreRunning()) return true; #if ! (defined(__WXMAC__) || defined(__WXMSW__)) // Mac and Windows can restart Client as a daemon, but // Linux may not know Client's location if it didn't start the Client if (!m_bBOINCStartedByManager) return false; #endif // Alert user if Client crashes 3 times in CLIENT_3_CRASH_MAX_TIME timeNow = dtime(); timeDiff = timeNow - m_fAutoRestart1Time; if ((timeDiff) < (CLIENT_3_CRASH_MAX_TIME * 60)) { int response; ClientCrashDlg *dlg = new ClientCrashDlg(timeDiff); if (dlg) { CBOINCBaseFrame* pFrame = wxGetApp().GetFrame(); if (!pFrame->IsShown()) { pFrame->Show(); } response = dlg->ShowModal(); dlg->Destroy(); if (response == wxID_CANCEL) return false; timeNow = 0; m_fAutoRestart1Time = 0; m_fAutoRestart2Time = 0; } } m_lBOINCCoreProcessId = 0; m_fAutoRestart1Time = m_fAutoRestart2Time; m_fAutoRestart2Time = timeNow; StartupBOINCCore(); return true; }
bool CBOINCClientManager::AutoRestart() { if (IsBOINCCoreRunning()) return true; #ifndef __WXMAC__ // Mac can restart Client as a daemon if (! m_bBOINCStartedByManager) return false; #endif m_lBOINCCoreProcessId = 0; StartupBOINCCore(); return true; }