diff --git a/BootMaster/config.c b/BootMaster/config.c index e03d23d9..c2e51ce6 100644 --- a/BootMaster/config.c +++ b/BootMaster/config.c @@ -146,7 +146,7 @@ VOID SyncLinuxPrefixes (VOID) { LINUX_PREFIXES ); } - else if (GlobalConfig.HelpScan) { + else { MergeUniqueItems ( &GlobalConfig.LinuxPrefixes, LINUX_PREFIXES, L',' @@ -163,7 +163,7 @@ VOID SyncAlsoScan (VOID) { ALSO_SCAN_DIRS ); } - else if (GlobalConfig.HelpScan) { + else { MergeUniqueItems ( &GlobalConfig.AlsoScan, ALSO_SCAN_DIRS, L',' @@ -216,16 +216,13 @@ VOID SyncDontScanFiles (VOID) { DONT_SCAN_FILES ); } - else if (GlobalConfig.HelpScan) { + else { MergeUniqueItems ( &GlobalConfig.DontScanFiles, DONT_SCAN_FILES, L',' ); } - if (!GlobalConfig.HelpScan) { - return; - } // Handle MEMTEST_NAMES in 'ScanLoaderDir' and not here // to accomodate fallback loaders in the list. @@ -3463,18 +3460,6 @@ VOID ReadConfig ( DeclineSetting = HandleBoolean (TokenList, TokenCount); GlobalConfig.HelpText = (DeclineSetting) ? FALSE : TRUE; } - else if (MyStriCmp (TokenList[0], L"decline_help_scan")) { - #if REFIT_DEBUG > 0 - if (!OuterLoop) { - UpdatedToken = LogUpdate ( - TokenList[0], NotRunBefore, TRUE - ); - } - #endif - - DeclineSetting = HandleBoolean (TokenList, TokenCount); - GlobalConfig.HelpScan = (DeclineSetting) ? FALSE : TRUE; - } else if (MyStriCmp (TokenList[0], L"decline_help_size")) { #if REFIT_DEBUG > 0 if (!OuterLoop) { diff --git a/BootMaster/global.h b/BootMaster/global.h index 8c19b0e6..8c174572 100644 --- a/BootMaster/global.h +++ b/BootMaster/global.h @@ -549,7 +549,6 @@ typedef struct { BOOLEAN HiddenTags; BOOLEAN LegacySync; BOOLEAN HelpIcon; - BOOLEAN HelpScan; BOOLEAN HelpSize; BOOLEAN HelpText; BOOLEAN SetAppleFB; diff --git a/BootMaster/icns.c b/BootMaster/icns.c index 62e87d0f..cf491ed1 100644 --- a/BootMaster/icns.c +++ b/BootMaster/icns.c @@ -73,7 +73,8 @@ BUILTIN_ICON TableBuiltinIconOS[BASE_OS_ICON_COUNT] = { { NULL, L"os_clover", ICON_SIZE_BIG }, { NULL, L"os_opencore", ICON_SIZE_BIG }, { NULL, L"os_unknown", ICON_SIZE_BIG }, - { NULL, L"os_dummy", ICON_SIZE_BIG } + { NULL, L"os_dummy", ICON_SIZE_BIG }, + { NULL, L"os_uefi", ICON_SIZE_BIG } }; BUILTIN_ICON BuiltinIconTable[BUILTIN_ICON_COUNT] = { @@ -204,6 +205,52 @@ EG_IMAGE * BuiltinIcon ( // Load an icon for an operating system // +static +VOID UpdateBaseIcon ( + IN CHAR16 *BaseName, + IN OUT EG_IMAGE **Image +) { + if (*Image != NULL) { + return; + } + + #if REFIT_DEBUG > 0 + ALT_LOG(1, LOG_LINE_NORMAL, + L"Find an Icon from '%s'", + BaseName + ); + #endif + + *Image = egFindIcon ( + BaseName, GlobalConfig.IconSizes[ICON_SIZE_BIG] + ); +} // static VOID UpdateBaseIcon() + +static +EG_IMAGE * LoadIndexedIcon ( + IN CHAR16 *BaseName OPTIONAL, + IN UINTN Id +) { + if (TableBuiltinIconOS[Id].Image == NULL) { + return NULL; + } + + if (BaseName != NULL && + !MyStriCmp (BaseName, TableBuiltinIconOS[Id].FileName) + ) { + return NULL; + } + + #if REFIT_DEBUG > 0 + ALT_LOG(1, LOG_THREE_STAR_MID, + L"Use Cached Icon:- '%s'", + TableBuiltinIconOS[Id].FileName + ); + #endif + + return TableBuiltinIconOS[Id].Image; +} // static EG_IMAGE * LoadIndexedIcon() + // Load an OS icon from among the comma-delimited list provided in OSIconName. // Searches for icons with extensions in the ICON_EXTENSIONS list (via // egFindIcon()). @@ -219,7 +266,6 @@ EG_IMAGE * LoadOSIcon ( UINTN Index2; UINTN Index; INTN OurId; // 'INTN' is important - INTN Id; // 'INTN' is important if (!AllowGraphicsMode) { @@ -227,9 +273,8 @@ EG_IMAGE * LoadOSIcon ( } // First, try to find an icon from the OSIconName list. - Id = -1; - OurId = -1; Index = 0; + OurId = -1; Image = NULL; while ( Image == NULL && @@ -241,199 +286,91 @@ EG_IMAGE * LoadOSIcon ( CutoutName ); + // Skip cache check if BootLogo is set + // BootLogo is not cached if (GlobalConfig.HelpIcon && !BootLogo) { for (Index2 = 0; Index2 < BASE_OS_ICON_COUNT; Index2++) { - if (MyStriCmp (BaseName, TableBuiltinIconOS[Index2].FileName)) { - OurId = Id = Index2; - if (TableBuiltinIconOS[Id].Image != NULL) { - #if REFIT_DEBUG > 0 - ALT_LOG(1, LOG_THREE_STAR_MID, - L"Use Cached Icon:- '%s'", - TableBuiltinIconOS[Id].FileName - ); - #endif - - Image = TableBuiltinIconOS[Id].Image; - } + Image = LoadIndexedIcon (BaseName, Index2); + if (Image != NULL) { + OurId = (Index2 < BASE_OS_ICON_COUNT) + ? Index2 : (BASE_OS_ICON_COUNT - 1); break; } } // for - } // if GlobalConfig.HelpIcon - - if (Image == NULL) { - Image = egFindIcon ( - BaseName, GlobalConfig.IconSizes[ICON_SIZE_BIG] - ); } - MY_FREE_POOL(CutoutName); + UpdateBaseIcon (BaseName, &Image); + MY_FREE_POOL(BaseName); + MY_FREE_POOL(CutoutName); } // while // If that fails, try again using the FallbackIconName. if (Image == NULL) { - Id = -1; BaseName = PoolPrint ( L"%s_%s", (BootLogo) ? L"boot" : L"os", FallbackIconName ); + // Skip cache check if BootLogo is set + // BootLogo is not cached if (GlobalConfig.HelpIcon && !BootLogo) { for (Index2 = 0; Index2 < BASE_OS_ICON_COUNT; Index2++) { - if (MyStriCmp (BaseName, TableBuiltinIconOS[Index2].FileName)) { - Id = Index2; - if (TableBuiltinIconOS[Id].Image != NULL) { - #if REFIT_DEBUG > 0 - ALT_LOG(1, LOG_THREE_STAR_MID, - L"Use Cached Icon:- '%s'", - TableBuiltinIconOS[Id].FileName - ); - #endif - - Image = TableBuiltinIconOS[Id].Image; - } + Image = LoadIndexedIcon (BaseName, Index2); + if (Image != NULL) { + OurId = (Index2 < BASE_OS_ICON_COUNT) + ? Index2 : (BASE_OS_ICON_COUNT - 1); break; } } // for - } // if GlobalConfig.HelpIcon - - if (Image == NULL) { - #if REFIT_DEBUG > 0 - ALT_LOG(1, LOG_LINE_NORMAL, - L"Find an Icon from '%s'", - BaseName - ); - #endif - - Image = egFindIcon ( - BaseName, GlobalConfig.IconSizes[ICON_SIZE_BIG] - ); } + UpdateBaseIcon (BaseName, &Image); MY_FREE_POOL(BaseName); } - // If that fails and if BootLogo was set, try again using the "os_" start of the name. + // If that fails and BootLogo was set, try again with "os_". if (BootLogo && Image == NULL) { - Id = -1; BaseName = PoolPrint (L"os_%s", FallbackIconName); if (GlobalConfig.HelpIcon) { for (Index2 = 0; Index2 < BASE_OS_ICON_COUNT; Index2++) { - if (MyStriCmp (BaseName, TableBuiltinIconOS[Index2].FileName)) { - Id = Index2; - if (TableBuiltinIconOS[Id].Image != NULL) { - #if REFIT_DEBUG > 0 - ALT_LOG(1, LOG_THREE_STAR_MID, - L"Use Cached Icon:- '%s'", - TableBuiltinIconOS[Id].FileName - ); - #endif - - Image = TableBuiltinIconOS[Id].Image; - } + Image = LoadIndexedIcon (BaseName, Index2); + if (Image != NULL) { + OurId = (Index2 < BASE_OS_ICON_COUNT) + ? Index2 : (BASE_OS_ICON_COUNT - 1); break; } } // for - } // if GlobalConfig.HelpIcon - - if (Image == NULL) { - #if REFIT_DEBUG > 0 - ALT_LOG(1, LOG_LINE_NORMAL, - L"Find an Icon from '%s'", - BaseName - ); - #endif - - Image = egFindIcon ( - BaseName, GlobalConfig.IconSizes[ICON_SIZE_BIG] - ); } + UpdateBaseIcon (BaseName, &Image); MY_FREE_POOL(BaseName); } - // If that fails try again using the "unknown" icon. - if (Image == NULL && + // If that fails try using the "unknown" icon specifically. + // Only if BootLogo is *NOT* set ... No "unknown" BootLogo icon + if (!BootLogo && + Image == NULL && !MyStriCmp (FallbackIconName, L"unknown") ) { - Id = -1; - BaseName = PoolPrint (L"%s_unknown", (BootLogo) ? L"boot" : L"os"); + BaseName = StrDuplicate (L"os_unknown"); - if (GlobalConfig.HelpIcon && !BootLogo) { - for (Index2 = 0; Index2 < BASE_OS_ICON_COUNT; Index2++) { - if (MyStriCmp (BaseName, TableBuiltinIconOS[Index2].FileName)) { - Id = Index2; - if (TableBuiltinIconOS[Id].Image != NULL) { - #if REFIT_DEBUG > 0 - ALT_LOG(1, LOG_THREE_STAR_MID, - L"Use Cached Icon:- '%s'", - TableBuiltinIconOS[Id].FileName - ); - #endif - - Image = TableBuiltinIconOS[Id].Image; - } - - break; - } - } // for - } // if GlobalConfig.HelpIcon - - if (Image == NULL) { - #if REFIT_DEBUG > 0 - ALT_LOG(1, LOG_LINE_NORMAL, - L"Find an Icon from '%s'", - BaseName - ); - #endif - - Image = egFindIcon ( - BaseName, GlobalConfig.IconSizes[ICON_SIZE_BIG] - ); + if (GlobalConfig.HelpIcon) { + Image = LoadIndexedIcon (BaseName, BASE_OS_ICON_UNKNOWN); } + UpdateBaseIcon (BaseName, &Image); MY_FREE_POOL(BaseName); - // If still fails, try again specifically using the "os_unknown" icon. - if (Image == NULL) { - Id = -1; - BaseName = StrDuplicate (L"os_unknown"); - - if (GlobalConfig.HelpIcon) { - Id = BASE_OS_ICON_UNKNOWN; - if (TableBuiltinIconOS[Id].Image != NULL) { - #if REFIT_DEBUG > 0 - ALT_LOG(1, LOG_THREE_STAR_MID, - L"Use Cached Icon:- '%s'", - TableBuiltinIconOS[Id].FileName - ); - #endif - - Image = TableBuiltinIconOS[Id].Image; - } - } // if GlobalConfig.HelpIcon - - if (Image == NULL) { - #if REFIT_DEBUG > 0 - ALT_LOG(1, LOG_LINE_NORMAL, - L"Find an Icon from '%s'", - BaseName - ); - #endif - - Image = egFindIcon ( - BaseName, GlobalConfig.IconSizes[ICON_SIZE_BIG] - ); - } - - MY_FREE_POOL(BaseName); - } // Image == NULL - } // Image == NULL && !MyStriCmp FallbackIconName + if (Image != NULL) { + OurId = BASE_OS_ICON_UNKNOWN; + } + } // If all of these fail, return the dummy image. if (Image == NULL) { @@ -441,28 +378,30 @@ EG_IMAGE * LoadOSIcon ( ALT_LOG(1, LOG_LINE_NORMAL, L"Set Dummy Image"); #endif - Id = -1; if (GlobalConfig.HelpIcon) { - Id = BASE_OS_ICON_DUMMY; - if (TableBuiltinIconOS[Id].Image != NULL) { - Image = TableBuiltinIconOS[Id].Image; - } - } // if GlobalConfig.HelpIcon + Image = LoadIndexedIcon (NULL, BASE_OS_ICON_DUMMY); + } if (Image == NULL) { Image = DummyImageEx (GlobalConfig.IconSizes[ICON_SIZE_BIG]); } + + if (Image != NULL) { + OurId = BASE_OS_ICON_DUMMY; + } } - if (GlobalConfig.HelpIcon && Image != NULL) { + if (Image == NULL) { + return NULL; + } + + // Cache the image if appropriate + // BootLogo is never cached + if (GlobalConfig.HelpIcon && !BootLogo) { if (OurId >= 0 && TableBuiltinIconOS[OurId].Image == NULL) { TableBuiltinIconOS[OurId].Image = Image; } - - if (Id >= 0 && TableBuiltinIconOS[Id].Image == NULL) { - TableBuiltinIconOS[Id].Image = Image; - } - } // if GlobalConfig.HelpIcon + } return egCopyImage (Image); } // EG_IMAGE * LoadOSIcon() diff --git a/BootMaster/icns.h b/BootMaster/icns.h index 2d4a435b..78fd007d 100644 --- a/BootMaster/icns.h +++ b/BootMaster/icns.h @@ -101,7 +101,8 @@ EG_IMAGE * BuiltinIcon (IN UINTN Id); #define BASE_OS_ICON_OPENCORE (6) #define BASE_OS_ICON_UNKNOWN (7) #define BASE_OS_ICON_DUMMY (8) -#define BASE_OS_ICON_COUNT (9) +#define BASE_OS_ICON_UEFI (9) +#define BASE_OS_ICON_COUNT (10) #endif diff --git a/BootMaster/lib.c b/BootMaster/lib.c index f0876e31..1f46d862 100644 --- a/BootMaster/lib.c +++ b/BootMaster/lib.c @@ -2177,21 +2177,19 @@ BOOLEAN VolumeScanAllowed ( } } - if (GlobalConfig.HelpScan) { - if (Volume->FSType == FS_TYPE_HFSPLUS && - GuidsAreEqual (&(Volume->PartTypeGuid), &GuidRecoveryHD) + if (Volume->FSType == FS_TYPE_HFSPLUS && + GuidsAreEqual (&(Volume->PartTypeGuid), &GuidRecoveryHD) + ) { + return FALSE; + } + + if (Volume->FSType == FS_TYPE_NTFS) { + if (MyStriCmp (Volume->VolName, L"System Reserved" ) || + MyStriCmp (Volume->VolName, L"System Device Bay" ) || + MyStriCmp (Volume->VolName, L"Microsoft Reserved Partition") ) { return FALSE; } - - if (Volume->FSType == FS_TYPE_NTFS) { - if (MyStriCmp (Volume->VolName, L"System Reserved" ) || - MyStriCmp (Volume->VolName, L"System Device Bay" ) || - MyStriCmp (Volume->VolName, L"Microsoft Reserved Partition") - ) { - return FALSE; - } - } } if (IsListItem (Volume->VolName, GlobalConfig.DontScanVolumes) || @@ -3531,6 +3529,8 @@ VOID LoadVolumeIcon ( CHAR16 *MsgStr; #endif + CHAR16 *BootDirectoryName; + LOG_SEP(L"X"); LOG_INCREMENT(); @@ -3590,12 +3590,25 @@ VOID LoadVolumeIcon ( MY_FREE_POOL(MsgStr); #endif - Volume->VolIconImage = egLoadIconAnyType ( - Volume->RootDir, - L"", - L".VolumeIcon", - GlobalConfig.IconSizes[ICON_SIZE_BIG] - ); + BootDirectoryName = RefitGetBootPathName (Volume->DevicePath); + if (BootDirectoryName != NULL) { + Volume->VolIconImage = egLoadIconAnyType ( + Volume->RootDir, + BootDirectoryName, + L".VolumeIcon", + GlobalConfig.IconSizes[ICON_SIZE_BIG] + ); + MY_FREE_POOL(BootDirectoryName); + } + + if (Volume->VolIconImage == NULL) { + Volume->VolIconImage = egLoadIconAnyType ( + Volume->RootDir, + L"", + L".VolumeIcon", + GlobalConfig.IconSizes[ICON_SIZE_BIG] + ); + } } else { #if REFIT_DEBUG > 0 diff --git a/BootMaster/main.c b/BootMaster/main.c index cb4ef225..8cba3b48 100644 --- a/BootMaster/main.c +++ b/BootMaster/main.c @@ -131,7 +131,6 @@ REFIT_CONFIG GlobalConfig = { .HiddenTags = TRUE, .LegacySync = TRUE, .HelpIcon = TRUE, - .HelpScan = TRUE, .HelpSize = TRUE, .HelpText = TRUE, .SetAppleFB = TRUE, @@ -3069,7 +3068,6 @@ EFI_STATUS EFIAPI efi_main ( LOG_MSG("%s SyncTrust:- '%03d'", TAG_ITEM_A(GlobalConfig.SyncTrust )); LOG_MSG("%s SyncAPFS:- '%s'", TAG_ITEM_C(GlobalConfig.SyncAPFS )); LOG_MSG("%s HelpIcon:- '%s'", TAG_ITEM_C(GlobalConfig.HelpIcon )); - LOG_MSG("%s HelpScan:- '%s'", TAG_ITEM_C(GlobalConfig.HelpScan )); LOG_MSG("%s CheckDXE:- '%s'", TAG_ITEM_C(GlobalConfig.RescanDXE )); LOG_MSG("%s TextOnly:- ", OffsetNext ); diff --git a/BootMaster/scan.c b/BootMaster/scan.c index 4403fd32..9dbb9f53 100644 --- a/BootMaster/scan.c +++ b/BootMaster/scan.c @@ -420,7 +420,6 @@ REFIT_MENU_SCREEN * InitializeSubScreen ( MY_MUTELOGGER_SET; #endif CheckFlag = ( - GlobalConfig.HelpScan && !FindSubStr (SubScreen->Title, L"vmlinuz") && !FindSubStr (SubScreen->Title, L"bzImage") && !FindSubStr (SubScreen->Title, L"Manual Stanza:") @@ -1361,15 +1360,15 @@ VOID SetLoaderDefaults ( } #endif - BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 2a 4", __func__); + BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 2a 3", __func__); if (GlobalConfig.HelpIcon) { - BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 2a 4a 1", __func__); + BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 2a 3a 1", __func__); MergeUniqueItems (&OSIconName, TargetName, L','); - BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 2a 4a 2", __func__); + BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 2a 3a 2", __func__); } - BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 2a 5", __func__); + BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 2a 4", __func__); MergeUniqueWords (&OSIconName, TargetName, L','); - BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 2a 6", __func__); + BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 2a 5", __func__); } BREAD_CRUMB(L"%a: 3a 1b 3b 5a 1a 3", __func__); } @@ -1630,51 +1629,80 @@ VOID SetLoaderDefaults ( BREAD_CRUMB(L"%a: 8", __func__); Entry->me.ShortcutLetter = ShortcutLetter; if (GetImage) { - BREAD_CRUMB(L"%a: 8a 0", __func__); + BREAD_CRUMB(L"%a: 7a 0", __func__); if (GotUEFI) { - BREAD_CRUMB(L"%a: 8a 0a 1", __func__); - MergeUniqueItems (&OSIconName, L"uefi", L','); - BREAD_CRUMB(L"%a: 8a 0a 2", __func__); + BREAD_CRUMB(L"%a: 7a 0a 1", __func__); + TmpIconName = StrDuplicate (L"uefi"); + if (!GlobalConfig.HelpIcon || Entry->OSType != 0) { + BREAD_CRUMB(L"%a: 7a 0a 1a 1", __func__); + MergeUniqueItems (&OSIconName, TmpIconName, L','); + MY_FREE_POOL(TmpIconName); + BREAD_CRUMB(L"%a: 7a 0a 1a 2", __func__); + } + else { + BREAD_CRUMB(L"%a: 7a 0a 1b 1", __func__); + MergeUniqueItems (&TmpIconName, OSIconName, L','); + MY_FREE_POOL(OSIconName); + OSIconName = TmpIconName; + BREAD_CRUMB(L"%a: 7a 0a 1b 2", __func__); + } + BREAD_CRUMB(L"%a: 7a 0a 2", __func__); } - #if REFIT_DEBUG > 0 - ALT_LOG(1, LOG_LINE_NORMAL, - L"Locate Icon Based on Hint String:- '%s'", - OSIconName - ); - #endif - - BREAD_CRUMB(L"%a: 8a 1", __func__); + BREAD_CRUMB(L"%a: 7a 1", __func__); if (!GotFlag && !MacFlag && ThisIconName != NULL && GlobalConfig.HelpIcon ) { - BREAD_CRUMB(L"%a: 8a 1a 1", __func__); + BREAD_CRUMB(L"%a: 7a 1a 1", __func__); i = 0; while ( !GotFlag && (Temp = FindCommaDelimited (OSIconName, i++)) != NULL ) { LOG_SEP(L"X"); - BREAD_CRUMB(L"%a: 8a 1a 1a 1 - WHILE LOOP:- START", __func__); + BREAD_CRUMB(L"%a: 7a 1a 1a 1 - WHILE LOOP:- START", __func__); if (IsListItem (Temp, BASE_LINUX_DISTROS)) { - BREAD_CRUMB(L"%a: 8a 1a 1a 1a 1", __func__); GotFlag = TRUE; - MergeUniqueItems (&OSIconName, L"linux", L','); - BREAD_CRUMB(L"%a: 8a 1a 1a 1a 1", __func__); + TmpIconName = StrDuplicate (L"linux"); + BREAD_CRUMB(L"%a: 7a 1a 1a 1a 1", __func__); + if (!GlobalConfig.HelpIcon) { + BREAD_CRUMB(L"%a: 7a 1a 1a 1a 1a 1", __func__); + MergeUniqueItems (&OSIconName, TmpIconName, L','); + MY_FREE_POOL(TmpIconName); + BREAD_CRUMB(L"%a: 7a 1a 1a 1a 1a 2", __func__); + } + else { + BREAD_CRUMB(L"%a: 7a 1a 1a 1a 1b 1", __func__); + MergeUniqueItems (&TmpIconName, OSIconName, L','); + MY_FREE_POOL(OSIconName); + OSIconName = TmpIconName; + BREAD_CRUMB(L"%a: 7a 1a 1a 1a 1b 2", __func__); + } + BREAD_CRUMB(L"%a: 7a 1a 1a 1a 2", __func__); } MY_FREE_POOL(Temp); - BREAD_CRUMB(L"%a: 8a 1a 1a 2 - WHILE LOOP:- END", __func__); + BREAD_CRUMB(L"%a: 7a 1a 1a 2 - WHILE LOOP:- END", __func__); LOG_SEP(L"X"); } // while - BREAD_CRUMB(L"%a: 8a 1a 2", __func__); + BREAD_CRUMB(L"%a: 7a 1a 2", __func__); } - BREAD_CRUMB(L"%a: 8a 2", __func__); + BREAD_CRUMB(L"%a: 7a 2", __func__); + ToLower (OSIconName); + + #if REFIT_DEBUG > 0 + ALT_LOG(1, LOG_LINE_NORMAL, + L"Locate Icon Based on Hint String:- '%s'", + OSIconName + ); + #endif + + BREAD_CRUMB(L"%a: 7a 3", __func__); Entry->me.Image = LoadOSIcon (OSIconName, L"unknown", FALSE); - BREAD_CRUMB(L"%a: 8a 3", __func__); + BREAD_CRUMB(L"%a: 7a 3", __func__); } BREAD_CRUMB(L"%a: 9", __func__); diff --git a/NEWS.txt b/NEWS.txt index 20327496..760fbacc 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -18,6 +18,12 @@ - The changes invalidated each other - Fixes `UGA Graphics` Handling * RefindPlus Crashed when run with UGA-based GPUs +- Improves `HelpIcon` Handling + * The `os_uefi` icon is now cached on first use + * Misc other icon caching related optimisations +- Improves `.VolumeIcon` Handling + * These can now the located under the same folder as a loader + * Such are preferred over any in the volume root - Improves `Misc` Handling * Some entry types were mislabelled as `Linux` * Now recognises `Linux Unified Key Setup (LUKS)` encrypted volumes @@ -26,6 +32,10 @@ - This variable is actually only stored in a volatile state * Addressed misc static analysis flags - These apply to some filesystem drivers; which are updated accordingly +- Amends `HelpScan` Feature + * The feature is now essentially included upstream + * Now removed as a standalone feature in RefindPlus and active as a default core item + * The associated `decline_help_scan` configuration token is now removed and ignored if set - Amends `Ventoy` Handling * Instances are now automatically detected and processed - Hence, specific handling is no longer user configurable diff --git a/README-Dev.md b/README-Dev.md index 6ee40409..cd928089 100644 --- a/README-Dev.md +++ b/README-Dev.md @@ -89,7 +89,6 @@ continue_on_warning |Proceed as if a key was pressed after screen warnings (fo csr_dynamic |Actively enables or disables Apple's `System Integrity Protection` (SIP) csr_normalise |Removes the `APPLE_INTERNAL` bit, when present, to permit OTA updates decline_help_icon |Disables feature that may improve loading speed by preferring generic icons -decline_help_scan |Disables feature that skips showing misc typically unwanted loaders decline_help_size |Disables feature that sets additional UI scaling for very high DPI screens decline_help_text |Disables feature that sets screen text to complementary colours decouple_key_f10 |Unmaps the `F10` key from native screenshots (the `\` key remains mapped)