public static void UIMain(string[] args) { ProcessUtils.LogParentProcessDetails(); TimelineStatsSender.Init(MultiInstanceStrings.VmName); TimelineStatsSender.HandleEngineBootEvent(EngineStatsEvent.player_launched.ToString()); Program.BstPlusDevicesInit(); Opt.Instance.Parse(args); if (Opt.Instance.help) { Program.Usage(); } Stats.SendFrontendStatusUpdate("frontend-launched", MultiInstanceStrings.VmName); if (!MultiInstanceUtils.VerifyVmId(MultiInstanceStrings.VmName)) { Logger.Error("VmName {0} , not part of VmList {1} , Exiting Process", (object)MultiInstanceStrings.VmName, (object)RegistryManager.Instance.VmList.ToString()); Environment.Exit(1); } Logger.InitVmInstanceName(MultiInstanceStrings.VmName); InputManagerProxy.SetUp(); if (HyperV.Instance.HyperVStatus == HyperV.ReturnCodes.MicrosoftHyperV) { Logger.Error("Hyper-V enabled for non Hyper-V build, exiting"); Environment.Exit(-5); } else { if (HyperV.Instance.HyperVStatus != HyperV.ReturnCodes.None) { Logger.Info("Non-microsoft Hyper-V may be active, continuing"); } Program.SetupAndRunApplication(Opt.Instance); } }
private static void SetupAndRunApplication(Opt opt) { Program.CheckIfAlreadyRunning(Opt.Instance.h); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (!VMWindow.CheckAndroidFilesIntegrity()) { Logger.Error("Android File Integrity check failed"); Environment.Exit(-2); } TimelineStatsSender.HandleEngineBootEvent(EngineStatsEvent.android_file_integrity_passed.ToString()); InputMapper.RegisterGuestBootLogsHandler(); AndroidService.StartAsync(); HTTPHandler.StartServer(); Program.InitAudioLogger(Logger.GetHdLoggerCallback()); VMWindow vmWindow = new VMWindow(opt.h, opt.w); Application.Run(); }