int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, #ifdef _WIN32_WCE gcc_unused LPWSTR lpCmdLine, #else gcc_unused LPSTR lpCmdLine2, #endif int nCmdShow) #endif { #ifdef WIN32 ResourceLoader::Init(hInstance); #endif Net::Initialise(); InitialiseDataPath(); StartupLogFreeRamAndStorage(); // Write startup note + version to logfile LogStartUp(_T("Starting XCSoar %s"), XCSoar_ProductToken); // Read options from the command line #ifndef WIN32 CommandLine::Parse(Args(argc, argv, Usage)); #else CommandLine::Parse(Args(GetCommandLine(), Usage)); #endif ScreenGlobalInit screen_init; // Write initialization note to logfile LogStartUp(_T("Initialise application instance")); #ifdef WIN32 /* try to make the UI most responsive */ SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL); #endif // Register window classes #ifdef USE_GDI MainWindow::register_class(hInstance); #endif AllowLanguage(); InitialiseIOThread(); // Perform application initialization and run loop int ret = EXIT_FAILURE; if (XCSoarInterface::Startup()) ret = CommonInterface::main_window.RunEventLoop(); CommonInterface::main_window.reset(); DeinitialiseIOThread(); DisallowLanguage(); Fonts::Deinitialize(); DeinitialiseDataPath(); Net::Deinitialise(); assert(!ExistsAnyThread()); return ret; }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, #ifdef _WIN32_WCE gcc_unused LPWSTR lpCmdLine, #else gcc_unused LPSTR lpCmdLine2, #endif int nCmdShow) #endif { #ifdef WIN32 ResourceLoader::Init(hInstance); #endif Net::Initialise(); InitialiseDataPath(); StartupLogFreeRamAndStorage(); // Write startup note + version to logfile LogFormat(_T("Starting XCSoar %s"), XCSoar_ProductToken); // Read options from the command line { #ifdef WIN32 Args args(GetCommandLine(), Usage); #else Args args(argc, argv, Usage); #endif CommandLine::Parse(args); } ScreenGlobalInit screen_init; #ifdef WIN32 /* try to make the UI most responsive */ SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL); #endif AllowLanguage(); InitialiseIOThread(); // Perform application initialization and run loop int ret = EXIT_FAILURE; if (Startup()) ret = CommonInterface::main_window->RunEventLoop(); if (CommonInterface::main_window != nullptr) { CommonInterface::main_window->Destroy(); delete CommonInterface::main_window; } DeinitialiseIOThread(); DisallowLanguage(); Fonts::Deinitialize(); DeinitialiseDataPath(); Net::Deinitialise(); assert(!ExistsAnyThread()); return ret; }