void InstallHangHandler() { DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &drawthread, 0, TRUE, DUPLICATE_SAME_ACCESS); int hangTimeoutMS = configHandler->Get("HangTimeout", 0); CrashHandler::gameLoading = false; // HangTimeout = -1 to force disable hang detection if (hangTimeoutMS >= 0) { if (hangTimeoutMS == 0) { hangTimeoutMS = 10; } hangTimeout = spring_secs(hangTimeoutMS); hangdetectorthread = new boost::thread(&HangDetector); } InitializeSEH(); }
void Install() { Win32::Install(); InitializeSEH(); };
/** * @brief Initializes the SpringApp instance * @return whether initialization was successful */ bool SpringApp::Initialize () { logOutput.SetMirrorToStdout(!!configHandler.GetInt("StdoutDebug",0)); // Initialize class system creg::System::InitializeClasses (); // Initialize crash reporting #ifdef _WIN32 #if defined(_CRASHRPT_H_) Install( (LPGETLOGFILE) crashCallback, "*****@*****.**", "Spring Crashreport"); if (!GetInstance()) { ErrorMessageBox("Error installing crash reporter", "CrashReport error:", MBF_OK); return false; } #elif defined(CRASHHANDLER_H) CrashHandler::Install(); #endif InitializeSEH(); #endif ParseCmdLine(); FileSystemHandler::Initialize(true); if (!InitWindow ("RtsSpring")) { SDL_Quit (); return false; } mouseInput = IMouseInput::Get (); // Global structures ENTER_SYNCED; gs=SAFE_NEW CGlobalSyncedStuff(); ENTER_UNSYNCED; gu=SAFE_NEW CGlobalUnsyncedStuff(); if (cmdline->result("minimise")) { gu->active = false; SDL_WM_IconifyWindow(); } // Enable auto quit? int quit_time; if (cmdline->result("quit", quit_time)) { gu->autoQuit = true; gu->quitTime = quit_time; } InitOpenGL(); palette.Init(); // Initialize keyboard SDL_EnableUNICODE(1); SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); SDL_SetModState (KMOD_NONE); keys = SAFE_NEW Uint8[SDLK_LAST]; memset (keys,0,sizeof(Uint8)*SDLK_LAST); // Initialize font const int charFirst = configHandler.GetInt("FontCharFirst", 32); const int charLast = configHandler.GetInt("FontCharLast", 255); std::string fontFile = configHandler.GetString("FontFile", "fonts/Luxi.ttf"); try { font = SAFE_NEW CglFont(charFirst, charLast, fontFile.c_str()); } catch(content_error&) { // If the standard location fails, retry in fonts directory or vice versa. if (fontFile.substr(0, 6) == "fonts/") fontFile = fontFile.substr(6); else fontFile = "fonts/" + fontFile; font = SAFE_NEW CglFont(charFirst, charLast, fontFile.c_str()); } // Initialize GLEW LoadExtensions(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); SDL_GL_SwapBuffers(); // Initialize named texture handler CNamedTextures::Init(); // Initialize Lua GL LuaOpenGL::Init(); // Initialize ScriptHandler / LUA CScriptHandler::Instance().StartLua(); // Create CGameSetup and CPreGame objects CreateGameSetup (); return true; }