diff --git a/OpenCorePkg b/OpenCorePkg index a38c3a370..c24f740b0 160000 --- a/OpenCorePkg +++ b/OpenCorePkg @@ -1 +1 @@ -Subproject commit a38c3a3705021e3808d62d135e0a4089d74986b5 +Subproject commit c24f740b07c97efec0b772d914a9bdab448f3039 diff --git a/rEFIt_UEFI/entry_scan/legacy.cpp b/rEFIt_UEFI/entry_scan/legacy.cpp index 60fd817b8..1bae78300 100755 --- a/rEFIt_UEFI/entry_scan/legacy.cpp +++ b/rEFIt_UEFI/entry_scan/legacy.cpp @@ -57,12 +57,13 @@ //the function is not in the class and deals always with MainMenu //I made args as pointers to have an ability to call with NULL -XBool AddLegacyEntry(IN const XStringW& FullTitle, IN const XStringW& _LoaderTitle, IN REFIT_VOLUME *Volume, IN const XIcon* Image, IN const XIcon* DriveImage, IN char32_t Hotkey, IN XBool CustomEntry) +XBool AddLegacyEntry(IN const XStringW& FullTitle, IN const XStringW& _LoaderTitle, IN REFIT_VOLUME *Volume, + IN const XIcon* Image, IN const XIcon* DriveImage, IN wchar_t Hotkey, IN XBool CustomEntry) { LEGACY_ENTRY *Entry, *SubEntry; REFIT_MENU_SCREEN *SubScreen; XStringW VolDesc; - CHAR16 ShortcutLetter = 0; + wchar_t ShortcutLetter = 0; // INTN i; DBG(" AddLegacyEntry:\n"); diff --git a/rEFIt_UEFI/entry_scan/loader.cpp b/rEFIt_UEFI/entry_scan/loader.cpp index 4903577f5..583ef1ab7 100644 --- a/rEFIt_UEFI/entry_scan/loader.cpp +++ b/rEFIt_UEFI/entry_scan/loader.cpp @@ -909,7 +909,7 @@ STATIC LOADER_ENTRY *CreateLoaderEntry(IN CONST XStringW& LoaderPath, IN XIcon *DriveImage, IN UINT8 OSType, IN UINT8 Flags, - IN char32_t Hotkey, + IN wchar_t Hotkey, EFI_GRAPHICS_OUTPUT_BLT_PIXEL BootBgColor, IN UINT8 CustomBoot, IN const XImage& CustomLogo, @@ -919,7 +919,7 @@ STATIC LOADER_ENTRY *CreateLoaderEntry(IN CONST XStringW& LoaderPath, EFI_DEVICE_PATH *LoaderDevicePath; XStringW LoaderDevicePathString; XStringW FilePathAsString; - CHAR16 ShortcutLetter; + wchar_t ShortcutLetter; LOADER_ENTRY *Entry; CONST CHAR8 *indent = " "; @@ -1085,7 +1085,7 @@ if ( Entry->APFSTargetUUID.Data1 == 0x99999999 ) { Entry->Flags = OSFLAG_SET(Entry->Flags, OSFLAG_HIBERNATED); DBG("%s =>set entry as hibernated\n", indent); } - ShortcutLetter = 'M'; + ShortcutLetter = L'M'; if ( Entry->DisplayedVolName.isEmpty() ) { // else no sense to override it with dubious name GetOSXVolumeName(Entry); @@ -1093,12 +1093,12 @@ if ( Entry->APFSTargetUUID.Data1 == 0x99999999 ) { break; case OSTYPE_WIN: OSIconName = L"win"_XSW; - ShortcutLetter = 'W'; + ShortcutLetter = L'W'; break; case OSTYPE_WINEFI: OSIconName = L"vista,win"_XSW; //ShortcutLetter = 'V'; - ShortcutLetter = 'W'; + ShortcutLetter = L'W'; break; case OSTYPE_LIN: case OSTYPE_LINEFI: @@ -1109,12 +1109,12 @@ if ( Entry->APFSTargetUUID.Data1 == 0x99999999 ) { DBG("%slinux image not found\n", indent); OSIconName = LinuxIconNameFromPath(LoaderPath, Volume->RootDir); //something named "issue" } - ShortcutLetter = 'L'; + ShortcutLetter = L'L'; break; //case OSTYPE_OTHER: case OSTYPE_EFI: OSIconName = L"clover"_XSW; - ShortcutLetter = 'E'; + ShortcutLetter = L'E'; Entry->LoaderType = OSTYPE_OTHER; break; default: diff --git a/rEFIt_UEFI/entry_scan/tool.cpp b/rEFIt_UEFI/entry_scan/tool.cpp index 3ec31312a..67e831a5e 100755 --- a/rEFIt_UEFI/entry_scan/tool.cpp +++ b/rEFIt_UEFI/entry_scan/tool.cpp @@ -81,7 +81,7 @@ STATIC XBool AddToolEntry(IN CONST XStringW& LoaderPath, IN CONST CHAR16 *FullTitle, IN CONST CHAR16 *LoaderTitle, IN REFIT_VOLUME *Volume, const XIcon& Image, - IN char32_t ShortcutLetter, IN CONST XString8Array& Options) + IN wchar_t ShortcutLetter, IN CONST XString8Array& Options) { REFIT_MENU_ENTRY_LOADER_TOOL *Entry; // Check the loader exists @@ -128,7 +128,7 @@ STATIC void AddCloverEntry(IN CONST XStringW& LoaderPath, IN CONST CHAR16 *Loade Entry->Title.takeValueFrom(LoaderTitle); // Entry->Tag = TAG_CLOVER; Entry->Row = 1; - Entry->ShortcutLetter = 'C'; + Entry->ShortcutLetter = L'C'; Entry->Image = ThemeX->GetIcon(BUILTIN_ICON_FUNC_CLOVER); Entry->Volume = Volume; Entry->LoaderPath = LoaderPath; diff --git a/rEFIt_UEFI/gui/REFIT_MENU_SCREEN.cpp b/rEFIt_UEFI/gui/REFIT_MENU_SCREEN.cpp index 62aeaad93..5a289c1d4 100644 --- a/rEFIt_UEFI/gui/REFIT_MENU_SCREEN.cpp +++ b/rEFIt_UEFI/gui/REFIT_MENU_SCREEN.cpp @@ -433,12 +433,13 @@ void REFIT_MENU_SCREEN::FreeMenu() INTN REFIT_MENU_SCREEN::FindMenuShortcutEntry(IN wchar_t Shortcut) { - if (Shortcut >= 'a' && Shortcut <= 'z') - Shortcut -= ('a' - 'A'); + if (Shortcut >= L'a' && Shortcut <= L'z') + Shortcut -= (L'a' - L'A'); if (Shortcut) { for (UINTN i = 0; i < Entries.size(); i++) { if (Entries[i].ShortcutDigit == Shortcut || Entries[i].ShortcutLetter == Shortcut) { + DBG("found entry %lld because shorcut=%x and ShortcutLetter=%x\n", i, Shortcut, Entries[i].ShortcutLetter); return i; } } @@ -694,7 +695,7 @@ UINTN REFIT_MENU_SCREEN::RunGenericMenu(IN OUT INTN *DefaultEntryIndex, OUT REFI EFI_STATUS Status; EFI_INPUT_KEY key; // UINTN Index; - CHAR16 ShortcutEntry; + INTN ShortcutEntry; XBool HaveTimeout = false; INTN TimeoutCountdown = 0; UINTN MenuExit; @@ -881,7 +882,7 @@ UINTN REFIT_MENU_SCREEN::RunGenericMenu(IN OUT INTN *DefaultEntryIndex, OUT REFI HidePointer(); //ycr.ru HaveTimeout = false; } - + DBG("key: scancode=0x%x unicode=0x%x\n", key.ScanCode, key.UnicodeChar); mAction = ActionNone; //do action once // react to key press switch (key.ScanCode) { diff --git a/rEFIt_UEFI/gui/REFIT_MENU_SCREEN.h b/rEFIt_UEFI/gui/REFIT_MENU_SCREEN.h index c752e0ac4..22a378e6c 100644 --- a/rEFIt_UEFI/gui/REFIT_MENU_SCREEN.h +++ b/rEFIt_UEFI/gui/REFIT_MENU_SCREEN.h @@ -423,7 +423,7 @@ public: void AddMenuCheck(CONST CHAR8 *Text, UINTN Bit, INTN ItemNum); void AddMenuItemInput(INTN Inx, CONST CHAR8 *Title, XBool Cursor); void FreeMenu(); - INTN FindMenuShortcutEntry(IN wchar_t Shortcut); + INTN FindMenuShortcutEntry(IN CHAR16 Shortcut); UINTN RunGenericMenu(IN OUT INTN *DefaultEntryIndex, OUT REFIT_ABSTRACT_MENU_ENTRY **ChosenEntry); UINTN RunMenu(OUT REFIT_ABSTRACT_MENU_ENTRY **ChosenEntry); UINTN InputDialog(); diff --git a/rEFIt_UEFI/gui/menu_items/menu_items.h b/rEFIt_UEFI/gui/menu_items/menu_items.h index 3019fa397..6c492b16c 100644 --- a/rEFIt_UEFI/gui/menu_items/menu_items.h +++ b/rEFIt_UEFI/gui/menu_items/menu_items.h @@ -107,8 +107,8 @@ class REFIT_ABSTRACT_MENU_ENTRY XStringW Title = XStringW(); XBool Hidden = false; UINTN Row = 0; - CHAR16 ShortcutDigit = 0; - CHAR16 ShortcutLetter = 0; + wchar_t ShortcutDigit = 0; + wchar_t ShortcutLetter = 0; XIcon Image = 0; EG_RECT Place = EG_RECT(); ACTION AtClick = ActionNone; @@ -145,7 +145,7 @@ class REFIT_ABSTRACT_MENU_ENTRY REFIT_ABSTRACT_MENU_ENTRY() {}; REFIT_ABSTRACT_MENU_ENTRY(const XStringW& Title_) : Title(Title_) {}; REFIT_ABSTRACT_MENU_ENTRY(const XStringW& Title_, ACTION AtClick_) : Title(Title_), AtClick(AtClick_) {}; - REFIT_ABSTRACT_MENU_ENTRY(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_) : Title(Title_), Row(Row_), ShortcutDigit(ShortcutDigit_), ShortcutLetter(ShortcutLetter_), AtClick(AtClick_) {}; + REFIT_ABSTRACT_MENU_ENTRY(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_) : Title(Title_), Row(Row_), ShortcutDigit(ShortcutDigit_), ShortcutLetter(ShortcutLetter_), AtClick(AtClick_) {}; REFIT_ABSTRACT_MENU_ENTRY(const REFIT_ABSTRACT_MENU_ENTRY&) { panic("not yet defined"); } REFIT_ABSTRACT_MENU_ENTRY& operator=(const REFIT_ABSTRACT_MENU_ENTRY&) { panic("not yet defined"); } @@ -177,7 +177,7 @@ class REFIT_ABSTRACT_MENU_ENTRY { public: REFIT_MENU_ITEM_RETURN() : REFIT_ABSTRACT_MENU_ENTRY() {}; - REFIT_MENU_ITEM_RETURN(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_) + REFIT_MENU_ITEM_RETURN(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_) : REFIT_ABSTRACT_MENU_ENTRY(Title_, Row_, ShortcutDigit_, ShortcutLetter_, AtClick_) {}; virtual REFIT_MENU_ITEM_RETURN* getREFIT_MENU_ITEM_RETURN() { return this; }; @@ -187,7 +187,7 @@ class REFIT_ABSTRACT_MENU_ENTRY { public: REFIT_MENU_ITEM_SHUTDOWN() : REFIT_ABSTRACT_MENU_ENTRY() {}; - REFIT_MENU_ITEM_SHUTDOWN(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_) + REFIT_MENU_ITEM_SHUTDOWN(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_) : REFIT_ABSTRACT_MENU_ENTRY(Title_, Row_, ShortcutDigit_, ShortcutLetter_, AtClick_) {}; virtual REFIT_MENU_ITEM_SHUTDOWN* getREFIT_MENU_ITEM_SHUTDOWN() { return this; }; @@ -196,7 +196,7 @@ class REFIT_ABSTRACT_MENU_ENTRY class REFIT_MENU_ITEM_RESET : public REFIT_ABSTRACT_MENU_ENTRY { public: REFIT_MENU_ITEM_RESET() : REFIT_ABSTRACT_MENU_ENTRY() {}; - REFIT_MENU_ITEM_RESET(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_) + REFIT_MENU_ITEM_RESET(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_) : REFIT_ABSTRACT_MENU_ENTRY(Title_, Row_, ShortcutDigit_, ShortcutLetter_, AtClick_) {}; virtual REFIT_MENU_ITEM_RESET* getREFIT_MENU_ITEM_RESET() { return this; }; @@ -206,7 +206,7 @@ class REFIT_ABSTRACT_MENU_ENTRY { public: REFIT_MENU_ITEM_ABOUT() : REFIT_ABSTRACT_MENU_ENTRY() {}; - REFIT_MENU_ITEM_ABOUT(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_) + REFIT_MENU_ITEM_ABOUT(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_) : REFIT_ABSTRACT_MENU_ENTRY(Title_, Row_, ShortcutDigit_, ShortcutLetter_, AtClick_) {}; virtual REFIT_MENU_ITEM_ABOUT* getREFIT_MENU_ITEM_ABOUT() { return this; }; @@ -215,7 +215,7 @@ class REFIT_ABSTRACT_MENU_ENTRY class REFIT_MENU_ITEM_OPTIONS : public REFIT_ABSTRACT_MENU_ENTRY { public: REFIT_MENU_ITEM_OPTIONS() : REFIT_ABSTRACT_MENU_ENTRY() {}; - REFIT_MENU_ITEM_OPTIONS(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_) + REFIT_MENU_ITEM_OPTIONS(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_) : REFIT_ABSTRACT_MENU_ENTRY(Title_, Row_, ShortcutDigit_, ShortcutLetter_, AtClick_) {}; virtual REFIT_MENU_ITEM_OPTIONS* getREFIT_MENU_ITEM_OPTIONS() { return this; }; diff --git a/rEFIt_UEFI/libeg/VectorGraphics.cpp b/rEFIt_UEFI/libeg/VectorGraphics.cpp index decbd14d0..9548f16a1 100755 --- a/rEFIt_UEFI/libeg/VectorGraphics.cpp +++ b/rEFIt_UEFI/libeg/VectorGraphics.cpp @@ -146,9 +146,9 @@ EFI_STATUS XTheme::ParseSVGXTheme(UINT8* buffer, UINTN Size) EFI_STATUS Status; Icons.setEmpty(); - +#ifdef JIEF_DEBUG displayFreeMemory("XTheme::ParseSVGXTheme begin"_XS8); - +#endif #if defined(JIEF_DEBUG) && defined(NANOSVG_MEMORY_ALLOCATION_TRACE) if ( nsvg__nbDanglingPtr() > 0 ) { DBG("There is already dangling ptr. nano svg memory leak test not done\n"); @@ -307,9 +307,9 @@ if ( nsvg__nbDanglingPtr() > 0 ) { SVGParser->fontsDB = NULL; // To avoid nsvg__deleteParser to delete it; nsvg__deleteParser(SVGParser); // comment out this line and the next to keep the parser memory, in case of doubt that font are dependent. SVGParser = NULL; - +#ifdef JIEF_DEBUG displayFreeMemory("XTheme::ParseSVGXTheme end"_XS8); - +#endif return EFI_SUCCESS; } diff --git a/rEFIt_UEFI/libeg/XTheme.cpp b/rEFIt_UEFI/libeg/XTheme.cpp index c3dd847ef..3a857f000 100644 --- a/rEFIt_UEFI/libeg/XTheme.cpp +++ b/rEFIt_UEFI/libeg/XTheme.cpp @@ -211,8 +211,9 @@ finish: ThemeX->PrepareFont(); } //ThemeX->ClearScreen(); - +#ifdef JIEF_DEBUG displayFreeMemory("InitTheme end"_XS8); +#endif return Status; } diff --git a/rEFIt_UEFI/refit/main.cpp b/rEFIt_UEFI/refit/main.cpp index 18ce2765a..93289caf7 100644 --- a/rEFIt_UEFI/refit/main.cpp +++ b/rEFIt_UEFI/refit/main.cpp @@ -779,7 +779,9 @@ void LOADER_ENTRY::StartLoader() DbgHeader("StartLoader"); DBG("Starting %ls\n", FileDevicePathToXStringW(DevicePath).wc_str()); +#ifdef JIEF_DEBUG displayFreeMemory("LOADER_ENTRY::StartLoader()"_XS8); +#endif // while ( OcCountFreePages(NULL) > 300000 && AllocatePages(100) ) /*DBG("Free memory : %lld\n", OcCountFreePages(NULL))*/; // displayFreeMemory(); @@ -1728,8 +1730,9 @@ void LOADER_ENTRY::StartLoader() AllocSmallBlocks(); // shrink memory map; PrintMemoryMap(); +#ifdef JIEF_DEBUG displayFreeMemory("Just before launching image"_XS8); - +#endif Status = gBS->StartImage (ImageHandle, 0, NULL); // point to OcStartImage from OC if ( EFI_ERROR(Status) ) { @@ -2809,9 +2812,9 @@ RefitMainMain (IN EFI_HANDLE ImageHandle, MsgLog("Starting %s on %ls EFI\n", gRevisionStr, gST->FirmwareVendor); MsgLog("Build id: %s\n", gBuildId.c_str()); if ( gBuildInfo ) DBG("Build with: [%s]\n", gBuildInfo); - +#ifdef JIEF_DEBUG displayFreeMemory(""_XS8); - +#endif //dumping SETTING structure // if you change something in Platform.h, please uncomment and test that all offsets @@ -2901,6 +2904,11 @@ RefitMainMain (IN EFI_HANDLE ImageHandle, #if 0 //testing place { + DBG(" size CHAR8=%ld\n", sizeof(CHAR8)); + DBG(" size CHAR16=%ld\n", sizeof(CHAR16)); + DBG(" size wchar_t=%ld\n", sizeof(wchar_t)); + DBG(" size char32_t=%ld\n", sizeof(char32_t)); + DBG(" size char16_t=%ld\n", sizeof(char16_t)); const CHAR16 aaa[] = L"12345 "; const CHAR8 *bbb = "12345 "; DBG(" string %ls, size=%lld, len=%lld sizeof=%ld iStrLen=%lld\n", aaa, StrSize(aaa), StrLen(aaa), sizeof(aaa), iStrLen(bbb, 10)); @@ -2908,8 +2916,8 @@ RefitMainMain (IN EFI_HANDLE ImageHandle, DBG(" string %s, size=%lld, len=%lld sizeof=%ld iStrLen=%lld\n", ccc, AsciiStrSize(ccc), AsciiStrLen(ccc), sizeof(ccc), iStrLen(ccc, 10)); XString8 ddd = "Выход "_XS8; // size_t sizex = ddd.allocatedSize(); - DBG(" xstring %s, asize=%ld, sizeinbyte=%ld sizeof=%ld lastcharat=%ld\n", ddd.c_str(), ddd.allocatedSize(), ddd.sizeInBytes(), sizeof(ddd), - ddd.indexOf(ddd.lastChar())); + DBG(" xstring %s, asize=%ld, sizeinbyte=%ld sizeof=%ld lastcharat=%ld\n", ddd.c_str(), ddd.allocatedSize(), + ddd.sizeInBytes(), sizeof(ddd), ddd.indexOf(ddd.lastChar())); CHAR8 compatible[64]; UINT32 FakeLAN = 0x0030168c; UINT32 FakeID = FakeLAN >> 16; @@ -2926,12 +2934,16 @@ RefitMainMain (IN EFI_HANDLE ImageHandle, sizeof(void*), sizeof(int), sizeof(long int), sizeof(long long), sizeof(EFI_ALLOCATE_TYPE)); /* Results - 41:381 0:000 string 12345 , size=16, len=7 sizeof=16 iStrLen=5 - 41:381 0:000 string Выход , size=13, len=12 sizeof=8 iStrLen=10 - 41:381 0:000 xstring Выход , asize=0, sizeinbyte=11 sizeof=16 lastcharat=5 - 41:381 0:000 FakeLAN = 0x30168c - 41:381 0:000 Compatible=pci168c,30 strlen=10 sizeof=64 iStrLen=10 - + 1:200 0:025 size CHAR8=1 + 1:226 0:025 size CHAR16=2 + 1:251 0:024 size wchar_t=2 + 1:275 0:024 size char16_t=2 + 1:381 0:000 string 12345 , size=16, len=7 sizeof=16 iStrLen=5 + 1:381 0:000 string Выход , size=13, len=12 sizeof=8 iStrLen=10 + 1:381 0:000 xstring Выход , asize=0, sizeinbyte=11 sizeof=16 lastcharat=5 + 1:381 0:000 FakeLAN = 0x30168c + 1:381 0:000 Compatible=pci168c,30 strlen=10 sizeof=64 iStrLen=10 + 1:430 0:025 void*=8 int=4 long=8 longlong=8 enum=4 */ } #endif @@ -3226,7 +3238,9 @@ DefaultIndex = MainMenu.Entries.length()-1; // this should be "Exit Clover" GlobalConfig.gThemeChanged = false; ThemeX->ClearScreen(); } +#ifdef JIEF_DEBUG displayFreeMemory("Before RunMainMenu"_XS8); +#endif MenuExit = MainMenu.RunMainMenu(DefaultIndex, &ChosenEntry); } // DBG("exit from MainMenu %llu\n", MenuExit); //MENU_EXIT_ENTER=(1) MENU_EXIT_DETAILS=3 @@ -3383,7 +3397,7 @@ log_technical_bug("not done yet"); #endif // ENABLE_SECURE_BOOT // DBG("come to Clover entry with letter %c\n", ChosenEntry->ShortcutLetter); REFIT_MENU_ENTRY_CLOVER* LoaderEntry = ChosenEntry->getREFIT_MENU_ENTRY_CLOVER(); - if ((ChosenEntry->ShortcutLetter == 'C') || LoaderEntry != NULL ) { // Clover options + if ((ChosenEntry->ShortcutLetter == L'C') || LoaderEntry != NULL ) { // Clover options // DBG("enter Clover entry\n"); if (LoaderEntry->LoadOptions.notEmpty()) {