diff --git a/Qemu/gdb_launch b/Qemu/gdb_launch index 9c764bb6c..299d0b103 100755 --- a/Qemu/gdb_launch +++ b/Qemu/gdb_launch @@ -46,7 +46,7 @@ then fi if ! [ -f "$SCRIPT_DIR"/disk_image_gpt.img ] then - unzip -o "$SCRIPT_DIR"/disk_image_gpt.img.zip + unzip -o "$SCRIPT_DIR"/disk_image_gpt.img.zip -d "$SCRIPT_DIR" rm -rf "$SCRIPT_DIR"/__MACOSX fi diff --git a/rEFIt_UEFI/Platform/Settings.cpp b/rEFIt_UEFI/Platform/Settings.cpp index 2162191cb..8e6f47692 100755 --- a/rEFIt_UEFI/Platform/Settings.cpp +++ b/rEFIt_UEFI/Platform/Settings.cpp @@ -2881,47 +2881,47 @@ EFI_STATUS GetEarlyUserSettings ( if (Prop != NULL) { gSettings.Language = Prop->getString()->stringValue(); if ( Prop->getString()->stringValue().contains("en") ) { - gSettings.GUI.gLanguage = english; + gSettings.GUI.Language = english; // gSettings.GUI.Codepage = 0xC0; // gSettings.GUI.CodepageSize = 0; } else if ( Prop->getString()->stringValue().contains("ru")) { - gSettings.GUI.gLanguage = russian; + gSettings.GUI.Language = russian; // gSettings.GUI.Codepage = 0x410; // gSettings.GUI.CodepageSize = 0x40; } else if ( Prop->getString()->stringValue().contains("ua")) { - gSettings.GUI.gLanguage = ukrainian; + gSettings.GUI.Language = ukrainian; // gSettings.GUI.Codepage = 0x400; // gSettings.GUI.CodepageSize = 0x60; } else if ( Prop->getString()->stringValue().contains("fr")) { - gSettings.GUI.gLanguage = french; //default is extended latin + gSettings.GUI.Language = french; //default is extended latin } else if ( Prop->getString()->stringValue().contains("it")) { - gSettings.GUI.gLanguage = italian; + gSettings.GUI.Language = italian; } else if ( Prop->getString()->stringValue().contains("es")) { - gSettings.GUI.gLanguage = spanish; + gSettings.GUI.Language = spanish; } else if ( Prop->getString()->stringValue().contains("pt")) { - gSettings.GUI.gLanguage = portuguese; + gSettings.GUI.Language = portuguese; } else if ( Prop->getString()->stringValue().contains("br")) { - gSettings.GUI.gLanguage = brasil; + gSettings.GUI.Language = brasil; } else if ( Prop->getString()->stringValue().contains("de")) { - gSettings.GUI.gLanguage = german; + gSettings.GUI.Language = german; } else if ( Prop->getString()->stringValue().contains("nl")) { - gSettings.GUI.gLanguage = dutch; + gSettings.GUI.Language = dutch; } else if ( Prop->getString()->stringValue().contains("pl")) { - gSettings.GUI.gLanguage = polish; + gSettings.GUI.Language = polish; } else if ( Prop->getString()->stringValue().contains("cz")) { - gSettings.GUI.gLanguage = czech; + gSettings.GUI.Language = czech; } else if ( Prop->getString()->stringValue().contains("hr")) { - gSettings.GUI.gLanguage = croatian; + gSettings.GUI.Language = croatian; } else if ( Prop->getString()->stringValue().contains("id")) { - gSettings.GUI.gLanguage = indonesian; + gSettings.GUI.Language = indonesian; } else if ( Prop->getString()->stringValue().contains("zh_CN")) { - gSettings.GUI.gLanguage = chinese; + gSettings.GUI.Language = chinese; // gSettings.GUI.Codepage = 0x3400; // gSettings.GUI.CodepageSize = 0x19C0; } else if ( Prop->getString()->stringValue().contains("ro")) { - gSettings.GUI.gLanguage = romanian; + gSettings.GUI.Language = romanian; } else if ( Prop->getString()->stringValue().contains("ko")) { - gSettings.GUI.gLanguage = korean; + gSettings.GUI.Language = korean; // gSettings.GUI.Codepage = 0x1100; // gSettings.GUI.CodepageSize = 0x100; } @@ -4027,6 +4027,7 @@ static void getACPISettings(const TagDict *CfgDict, SETTINGS_DATA& gSettings) DBG(" (%s)", dsdtPatch.PatchDsdtLabel.c_str()); Prop3 = Prop2->propertyForKey("Disabled"); + dsdtPatch.Disabled = IsPropertyNotNullAndTrue(Prop3); dsdtPatch.PatchDsdtMenuItem.BValue = !IsPropertyNotNullAndTrue(Prop3); //DBG(" DSDT bin patch #%d ", i); diff --git a/rEFIt_UEFI/Platform/Settings.h b/rEFIt_UEFI/Platform/Settings.h index 9b8168ae3..149460bd5 100644 --- a/rEFIt_UEFI/Platform/Settings.h +++ b/rEFIt_UEFI/Platform/Settings.h @@ -417,9 +417,10 @@ public: class DSDT_Patch { public : + bool Disabled = bool(); + XString8 PatchDsdtLabel = XString8(); XBuffer PatchDsdtFind = XBuffer(); XBuffer PatchDsdtReplace = XBuffer(); - XString8 PatchDsdtLabel = XString8(); XBuffer PatchDsdtTgt = XBuffer(); INPUT_ITEM PatchDsdtMenuItem = INPUT_ITEM(); @@ -502,13 +503,13 @@ public: { public: XStringW DsdtName = XStringW(); - bool DebugDSDT = 0; - bool Rtc8Allowed = 0; + bool DebugDSDT = 0; + bool Rtc8Allowed = 0; UINT8 PNLF_UID = 0; UINT32 FixDsdt = 0; + bool ReuseFFFF = 0; + bool SuspendOverride = 0; XObjArray DSDTPatchArray = XObjArray(); - bool ReuseFFFF = 0; - bool SuspendOverride = 0; } DSDT = DSDTClass(); class SSDTClass @@ -548,9 +549,9 @@ public: bool NoASPM = 0; bool smartUPS = 0; bool PatchNMI = 0; - XString8Array SortedACPI = XString8Array(); bool AutoMerge = 0; XStringWArray DisabledAML = XStringWArray(); + XString8Array SortedACPI = XString8Array(); XObjArray DeviceRename = XObjArray(); } ACPI = ACPIClass(); @@ -568,7 +569,7 @@ public: XStringW ScreenResolution = XStringW(); bool ProvideConsoleGop = 0; INTN ConsoleMode = 0; - LANGUAGES gLanguage = english; + LANGUAGES Language = english; bool KbdPrevLang = 0; class MouseClass { public: diff --git a/rEFIt_UEFI/entry_scan/loader.cpp b/rEFIt_UEFI/entry_scan/loader.cpp index 650640153..0c0a68547 100644 --- a/rEFIt_UEFI/entry_scan/loader.cpp +++ b/rEFIt_UEFI/entry_scan/loader.cpp @@ -846,34 +846,26 @@ void LOADER_ENTRY::AddDefaultMenu() if (OSFLAG_ISSET(Flags, OSFLAG_HIBERNATED)) { SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - SubEntry->Title.takeValueFrom("Cancel hibernate wake"); - SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_HIBERNATED); - SubScreen->AddMenuEntry(SubEntry, true); - } + SubEntry->Title.takeValueFrom("Cancel hibernate wake"); + SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_HIBERNATED); + SubScreen->AddMenuEntry(SubEntry, true); } SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - SubEntry->Title.SWPrintf("Boot %s with selected options", macOS); - SubScreen->AddMenuEntry(SubEntry, true); - } + SubEntry->Title.SWPrintf("Boot %s with selected options", macOS); + SubScreen->AddMenuEntry(SubEntry, true); #if 0 SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - SubEntry->Title.SWPrintf("Boot %s with injected kexts", macOS); - SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_CHECKFAKESMC); - SubEntry->Flags = OSFLAG_SET(SubEntry->Flags, OSFLAG_WITHKEXTS); - SubScreen->AddMenuEntry(SubEntry, true); - } + SubEntry->Title.SWPrintf("Boot %s with injected kexts", macOS); + SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_CHECKFAKESMC); + SubEntry->Flags = OSFLAG_SET(SubEntry->Flags, OSFLAG_WITHKEXTS); + SubScreen->AddMenuEntry(SubEntry, true); SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - SubEntry->Title.SWPrintf("Boot %s without injected kexts", macOS); - SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_CHECKFAKESMC); - SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_WITHKEXTS); - SubScreen->AddMenuEntry(SubEntry, true); - } + SubEntry->Title.SWPrintf("Boot %s without injected kexts", macOS); + SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_CHECKFAKESMC); + SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_WITHKEXTS); + SubScreen->AddMenuEntry(SubEntry, true); #endif SubScreen->AddMenuEntry(SubMenuKextInjectMgmt(), true); SubScreen->AddMenuInfo_f("=== boot-args ==="); @@ -916,58 +908,50 @@ void LOADER_ENTRY::AddDefaultMenu() // default entry SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - SubEntry->Title.SWPrintf("Run %ls", FileName.wc_str()); - SubScreen->AddMenuEntry(SubEntry, true); - } + SubEntry->Title.SWPrintf("Run %ls", FileName.wc_str()); + SubScreen->AddMenuEntry(SubEntry, true); SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { + if (Quiet) { + SubEntry->Title.SWPrintf("%ls verbose", Title.s()); + SubEntry->LoadOptions.removeIC(quietLitteral); + } else { + SubEntry->Title.SWPrintf("%ls quiet", Title.s()); + SubEntry->LoadOptions.AddID(quietLitteral); + } + SubScreen->AddMenuEntry(SubEntry, true); + + SubEntry = getPartiallyDuplicatedEntry(); + if (WithSplash) { + SubEntry->Title.SWPrintf("%ls without splash", Title.s()); + SubEntry->LoadOptions.removeIC(splashLitteral); + } else { + SubEntry->Title.SWPrintf("%ls with splash", Title.s()); + SubEntry->LoadOptions.AddID(splashLitteral); + } + SubScreen->AddMenuEntry(SubEntry, true); + + SubEntry = getPartiallyDuplicatedEntry(); + if (WithSplash) { if (Quiet) { - SubEntry->Title.SWPrintf("%ls verbose", Title.s()); + SubEntry->Title.SWPrintf("%ls verbose without splash", Title.s()); + SubEntry->LoadOptions.removeIC(splashLitteral); SubEntry->LoadOptions.removeIC(quietLitteral); } else { - SubEntry->Title.SWPrintf("%ls quiet", Title.s()); - SubEntry->LoadOptions.AddID(quietLitteral); - } - SubScreen->AddMenuEntry(SubEntry, true); - } - - SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - if (WithSplash) { - SubEntry->Title.SWPrintf("%ls without splash", Title.s()); + SubEntry->Title.SWPrintf("%ls quiet without splash",Title.s()); SubEntry->LoadOptions.removeIC(splashLitteral); - } else { - SubEntry->Title.SWPrintf("%ls with splash", Title.s()); - SubEntry->LoadOptions.AddID(splashLitteral); + SubEntry->LoadOptions.Add(quietLitteral); } - SubScreen->AddMenuEntry(SubEntry, true); - } - - SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - if (WithSplash) { - if (Quiet) { - SubEntry->Title.SWPrintf("%ls verbose without splash", Title.s()); - SubEntry->LoadOptions.removeIC(splashLitteral); - SubEntry->LoadOptions.removeIC(quietLitteral); - } else { - SubEntry->Title.SWPrintf("%ls quiet without splash",Title.s()); - SubEntry->LoadOptions.removeIC(splashLitteral); - SubEntry->LoadOptions.Add(quietLitteral); - } - } else if (Quiet) { - SubEntry->Title.SWPrintf("%ls verbose with splash",Title.s()); - SubEntry->LoadOptions.removeIC(quietLitteral); // - SubEntry->LoadOptions.AddID(splashLitteral); - } else { - SubEntry->Title.SWPrintf("%ls quiet with splash",Title.s()); - SubEntry->LoadOptions.AddID(quietLitteral); - SubEntry->LoadOptions.AddID(splashLitteral); - } - SubScreen->AddMenuEntry(SubEntry, true); + } else if (Quiet) { + SubEntry->Title.SWPrintf("%ls verbose with splash",Title.s()); + SubEntry->LoadOptions.removeIC(quietLitteral); // + SubEntry->LoadOptions.AddID(splashLitteral); + } else { + SubEntry->Title.SWPrintf("%ls quiet with splash",Title.s()); + SubEntry->LoadOptions.AddID(quietLitteral); + SubEntry->LoadOptions.AddID(splashLitteral); } + SubScreen->AddMenuEntry(SubEntry, true); } else if ((LoaderType == OSTYPE_WIN) || (LoaderType == OSTYPE_WINEFI)) { // by default, skip the built-in selection and boot from hard disk only @@ -977,36 +961,33 @@ void LOADER_ENTRY::AddDefaultMenu() // default entry SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - SubEntry->Title.SWPrintf("Run %ls", FileName.wc_str()); - SubScreen->AddMenuEntry(SubEntry, true); - } + SubEntry->Title.SWPrintf("Run %ls", FileName.wc_str()); + SubScreen->AddMenuEntry(SubEntry, true); SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - SubEntry->Title.takeValueFrom("Boot Windows from Hard Disk"); - SubScreen->AddMenuEntry(SubEntry, true); - } + SubEntry->Title.takeValueFrom("Boot Windows from Hard Disk"); + SubScreen->AddMenuEntry(SubEntry, true); SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - SubEntry->Title.takeValueFrom("Boot Windows from CD-ROM"); - LoadOptions.setEmpty(); - LoadOptions.Add("-s"_XS8); - LoadOptions.Add("-c"_XS8); - SubScreen->AddMenuEntry(SubEntry, true); - } + SubEntry->Title.takeValueFrom("Boot Windows from CD-ROM"); + LoadOptions.setEmpty(); + LoadOptions.Add("-s"_XS8); + LoadOptions.Add("-c"_XS8); + SubScreen->AddMenuEntry(SubEntry, true); SubEntry = getPartiallyDuplicatedEntry(); - if (SubEntry) { - SubEntry->Title.SWPrintf("Run %ls in text mode", FileName.wc_str()); - SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_USEGRAPHICS); - LoadOptions.setEmpty(); - LoadOptions.Add("-v"_XS8); - SubEntry->LoaderType = OSTYPE_OTHER; // Sothor - Why are we using OSTYPE_OTHER here? - SubScreen->AddMenuEntry(SubEntry, true); - } + SubEntry->Title.SWPrintf("Run %ls in text mode", FileName.wc_str()); + SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_USEGRAPHICS); + LoadOptions.setEmpty(); + LoadOptions.Add("-v"_XS8); + SubEntry->LoaderType = OSTYPE_OTHER; // Sothor - Why are we using OSTYPE_OTHER here? + SubScreen->AddMenuEntry(SubEntry, true); + }else{ + // default entry + SubEntry = getPartiallyDuplicatedEntry(); + SubEntry->Title.SWPrintf("Run %ls", FileName.wc_str()); + SubScreen->AddMenuEntry(SubEntry, true); } // SubScreen->AddMenuEntry(&MenuEntryReturn, false); //one-way ticket to avoid confusion diff --git a/rEFIt_UEFI/gui/REFIT_MAINMENU_SCREEN.cpp b/rEFIt_UEFI/gui/REFIT_MAINMENU_SCREEN.cpp index a14ed7b7d..4b4543e0c 100644 --- a/rEFIt_UEFI/gui/REFIT_MAINMENU_SCREEN.cpp +++ b/rEFIt_UEFI/gui/REFIT_MAINMENU_SCREEN.cpp @@ -752,7 +752,7 @@ UINTN REFIT_MAINMENU_SCREEN::RunMainMenu(IN INTN DefaultSelection, OUT REFIT_ABS MenuExit = RunGenericMenu(&DefaultEntryIndex, &MainChosenEntry); TimeoutSeconds = 0; - if (MenuExit == MENU_EXIT_DETAILS && MainChosenEntry->SubScreen != NULL) { + if (MenuExit == MENU_EXIT_DETAILS && MainChosenEntry->SubScreen != NULL && MainChosenEntry->SubScreen->Entries.size() > 0) { // if MainChosenEntry->SubScreen->Entries.size() == 0, we got a crash in GraphicsMenuStyle XString8Array TmpArgs; if ( gSettings.Boot.BootArgs.length() > 0) { TmpArgs = Split(gSettings.Boot.BootArgs, " "); @@ -865,6 +865,8 @@ UINTN REFIT_MAINMENU_SCREEN::RunMainMenu(IN INTN DefaultSelection, OUT REFIT_ABS } //--------- } + }else{ + MenuExit = 0; // loop on main menu } } diff --git a/rEFIt_UEFI/libeg/text.cpp b/rEFIt_UEFI/libeg/text.cpp index 39b4703c4..4fcba302a 100644 --- a/rEFIt_UEFI/libeg/text.cpp +++ b/rEFIt_UEFI/libeg/text.cpp @@ -94,7 +94,7 @@ void XTheme::LoadFontImage(IN BOOLEAN UseEmbedded, IN INTN Rows, IN INTN Cols) EFI_GRAPHICS_OUTPUT_BLT_PIXEL *PixelPtr; EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FontPtr; EFI_GRAPHICS_OUTPUT_BLT_PIXEL FirstPixel; - BOOLEAN isKorean = (gSettings.GUI.gLanguage == korean); + BOOLEAN isKorean = (gSettings.GUI.Language == korean); XStringW fontFilePath; const XStringW& commonFontDir = L"font"_XSW; @@ -108,7 +108,7 @@ void XTheme::LoadFontImage(IN BOOLEAN UseEmbedded, IN INTN Rows, IN INTN Cols) CharWidth = 22; //standard for korean } else { MsgLog("...using english\n"); - gSettings.GUI.gLanguage = english; + gSettings.GUI.Language = english; } } @@ -308,7 +308,7 @@ INTN XTheme::RenderText(IN const XStringW& Text, OUT XImage* CompImage_ptr, for (UINTN i = 0; i < TextLength && c0 != 0; i++) { UINT16 c = Text.wc_str()[i]; //including UTF8 -> UTF16 conversion DBG("initial char to render 0x%hx\n", c); //good - if (gSettings.GUI.gLanguage != korean) { //russian Codepage = 0x410 + if (gSettings.GUI.Language != korean) { //russian Codepage = 0x410 if (c >= 0x410 && c < 0x450) { //we have russian raster fonts with chars at 0xC0 c -= 0x350; diff --git a/rEFIt_UEFI/refit/main.cpp b/rEFIt_UEFI/refit/main.cpp index 39e1479c1..4eda6468f 100644 --- a/rEFIt_UEFI/refit/main.cpp +++ b/rEFIt_UEFI/refit/main.cpp @@ -2669,19 +2669,19 @@ void afterGetUserSettings(const SETTINGS_DATA& gSettings) ThemeX.DarkEmbedded = gSettings.GUI.getDarkEmbedded(ThemeX.Daylight); - if ( gSettings.GUI.gLanguage == english ) { + if ( gSettings.GUI.Language == english ) { GlobalConfig.Codepage = 0xC0; GlobalConfig.CodepageSize = 0; - } else if ( gSettings.GUI.gLanguage == russian ) { + } else if ( gSettings.GUI.Language == russian ) { GlobalConfig.Codepage = 0x410; GlobalConfig.CodepageSize = 0x40; - } else if ( gSettings.GUI.gLanguage == ukrainian ) { + } else if ( gSettings.GUI.Language == ukrainian ) { GlobalConfig.Codepage = 0x400; GlobalConfig.CodepageSize = 0x60; - } else if ( gSettings.GUI.gLanguage == chinese ) { + } else if ( gSettings.GUI.Language == chinese ) { GlobalConfig.Codepage = 0x3400; GlobalConfig.CodepageSize = 0x19C0; - } else if ( gSettings.GUI.gLanguage == korean ) { + } else if ( gSettings.GUI.Language == korean ) { GlobalConfig.Codepage = 0x1100; GlobalConfig.CodepageSize = 0x100; } @@ -2771,6 +2771,7 @@ RefitMain (IN EFI_HANDLE ImageHandle, // PauseForKey(L"press\n"); #endif } + gBS->Stall(2500000); // to give time to gdb to connect #ifdef CLOVER_BUILD construct_globals_objects(gImageHandle); // do this after self.getSelfLoadedImage() is initialized diff --git a/rEFIt_UEFI/refit/menu.cpp b/rEFIt_UEFI/refit/menu.cpp index 189d87530..11de2fddc 100644 --- a/rEFIt_UEFI/refit/menu.cpp +++ b/rEFIt_UEFI/refit/menu.cpp @@ -1138,7 +1138,7 @@ void HelpRefit(void) //else { // HelpMenu.TitleImage.setEmpty(); //} - switch (gSettings.GUI.gLanguage) + switch (gSettings.GUI.Language) { case russian: HelpMenu.AddMenuInfo_f("ESC - Выход из подменю, обновление главного меню");