mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-31 01:24:12 +02:00
Patch includes:
1.Update question value after BDS change code to avoid save invalid data. 2.Fix a corner case bug that may cause unexpected popup when changing the legacy device order. Signed-off-by: ydong10 Reviewed-by: lgao4 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12892 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
5c6889f7ce
commit
98ba35a40c
@ -280,12 +280,12 @@ BootMaintCallback (
|
|||||||
UINTN Pos;
|
UINTN Pos;
|
||||||
UINTN Bit;
|
UINTN Bit;
|
||||||
UINT16 NewValuePos;
|
UINT16 NewValuePos;
|
||||||
|
UINT16 Index3;
|
||||||
UINT16 Index2;
|
UINT16 Index2;
|
||||||
UINT16 Index;
|
UINT16 Index;
|
||||||
UINT8 *OldLegacyDev;
|
UINT8 *OldLegacyDev;
|
||||||
UINT8 *NewLegacyDev;
|
UINT8 *NewLegacyDev;
|
||||||
UINT8 *DisMap;
|
UINT8 *DisMap;
|
||||||
EFI_FORM_ID FormId;
|
|
||||||
|
|
||||||
if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {
|
if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {
|
||||||
//
|
//
|
||||||
@ -321,56 +321,30 @@ BootMaintCallback (
|
|||||||
//
|
//
|
||||||
// Update Select FD/HD/CD/NET/BEV Order Form
|
// Update Select FD/HD/CD/NET/BEV Order Form
|
||||||
//
|
//
|
||||||
if (FORM_SET_FD_ORDER_ID == Private->BmmPreviousPageId ||
|
if ((QuestionId >= LEGACY_FD_QUESTION_ID) && (QuestionId < LEGACY_BEV_QUESTION_ID + MAX_MENU_NUMBER)) {
|
||||||
FORM_SET_HD_ORDER_ID == Private->BmmPreviousPageId ||
|
|
||||||
FORM_SET_CD_ORDER_ID == Private->BmmPreviousPageId ||
|
|
||||||
FORM_SET_NET_ORDER_ID == Private->BmmPreviousPageId ||
|
|
||||||
FORM_SET_BEV_ORDER_ID == Private->BmmPreviousPageId ||
|
|
||||||
((FORM_BOOT_SETUP_ID == Private->BmmPreviousPageId) &&
|
|
||||||
(QuestionId >= LEGACY_FD_QUESTION_ID) &&
|
|
||||||
(QuestionId < (LEGACY_BEV_QUESTION_ID + 100)) )
|
|
||||||
) {
|
|
||||||
|
|
||||||
DisMap = Private->BmmOldFakeNVData.DisableMap;
|
DisMap = Private->BmmOldFakeNVData.DisableMap;
|
||||||
|
|
||||||
FormId = Private->BmmPreviousPageId;
|
if (QuestionId >= LEGACY_FD_QUESTION_ID && QuestionId < LEGACY_FD_QUESTION_ID + MAX_MENU_NUMBER) {
|
||||||
if (FormId == FORM_BOOT_SETUP_ID) {
|
|
||||||
FormId = Private->BmmCurrentPageId;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (FormId) {
|
|
||||||
case FORM_SET_FD_ORDER_ID:
|
|
||||||
Number = (UINT16) LegacyFDMenu.MenuNumber;
|
Number = (UINT16) LegacyFDMenu.MenuNumber;
|
||||||
OldLegacyDev = Private->BmmOldFakeNVData.LegacyFD;
|
OldLegacyDev = Private->BmmOldFakeNVData.LegacyFD;
|
||||||
NewLegacyDev = CurrentFakeNVMap->LegacyFD;
|
NewLegacyDev = CurrentFakeNVMap->LegacyFD;
|
||||||
break;
|
} else if (QuestionId >= LEGACY_HD_QUESTION_ID && QuestionId < LEGACY_HD_QUESTION_ID + MAX_MENU_NUMBER) {
|
||||||
|
|
||||||
case FORM_SET_HD_ORDER_ID:
|
|
||||||
Number = (UINT16) LegacyHDMenu.MenuNumber;
|
Number = (UINT16) LegacyHDMenu.MenuNumber;
|
||||||
OldLegacyDev = Private->BmmOldFakeNVData.LegacyHD;
|
OldLegacyDev = Private->BmmOldFakeNVData.LegacyHD;
|
||||||
NewLegacyDev = CurrentFakeNVMap->LegacyHD;
|
NewLegacyDev = CurrentFakeNVMap->LegacyHD;
|
||||||
break;
|
} else if (QuestionId >= LEGACY_CD_QUESTION_ID && QuestionId < LEGACY_CD_QUESTION_ID + MAX_MENU_NUMBER) {
|
||||||
|
|
||||||
case FORM_SET_CD_ORDER_ID:
|
|
||||||
Number = (UINT16) LegacyCDMenu.MenuNumber;
|
Number = (UINT16) LegacyCDMenu.MenuNumber;
|
||||||
OldLegacyDev = Private->BmmOldFakeNVData.LegacyCD;
|
OldLegacyDev = Private->BmmOldFakeNVData.LegacyCD;
|
||||||
NewLegacyDev = CurrentFakeNVMap->LegacyCD;
|
NewLegacyDev = CurrentFakeNVMap->LegacyCD;
|
||||||
break;
|
} else if (QuestionId >= LEGACY_NET_QUESTION_ID && QuestionId < LEGACY_NET_QUESTION_ID + MAX_MENU_NUMBER) {
|
||||||
|
|
||||||
case FORM_SET_NET_ORDER_ID:
|
|
||||||
Number = (UINT16) LegacyNETMenu.MenuNumber;
|
Number = (UINT16) LegacyNETMenu.MenuNumber;
|
||||||
OldLegacyDev = Private->BmmOldFakeNVData.LegacyNET;
|
OldLegacyDev = Private->BmmOldFakeNVData.LegacyNET;
|
||||||
NewLegacyDev = CurrentFakeNVMap->LegacyNET;
|
NewLegacyDev = CurrentFakeNVMap->LegacyNET;
|
||||||
break;
|
} else if (QuestionId >= LEGACY_BEV_QUESTION_ID && QuestionId < LEGACY_BEV_QUESTION_ID + MAX_MENU_NUMBER) {
|
||||||
|
|
||||||
case FORM_SET_BEV_ORDER_ID:
|
|
||||||
Number = (UINT16) LegacyBEVMenu.MenuNumber;
|
Number = (UINT16) LegacyBEVMenu.MenuNumber;
|
||||||
OldLegacyDev = Private->BmmOldFakeNVData.LegacyBEV;
|
OldLegacyDev = Private->BmmOldFakeNVData.LegacyBEV;
|
||||||
NewLegacyDev = CurrentFakeNVMap->LegacyBEV;
|
NewLegacyDev = CurrentFakeNVMap->LegacyBEV;
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// First, find the different position
|
// First, find the different position
|
||||||
@ -455,6 +429,7 @@ BootMaintCallback (
|
|||||||
// To prevent DISABLE appears in the middle of the list
|
// To prevent DISABLE appears in the middle of the list
|
||||||
// we should perform a re-ordering
|
// we should perform a re-ordering
|
||||||
//
|
//
|
||||||
|
Index3 = Index;
|
||||||
Index = 0;
|
Index = 0;
|
||||||
while (Index < Number) {
|
while (Index < Number) {
|
||||||
if (0xFF != NewLegacyDev[Index]) {
|
if (0xFF != NewLegacyDev[Index]) {
|
||||||
@ -485,6 +460,11 @@ BootMaintCallback (
|
|||||||
NewLegacyDev,
|
NewLegacyDev,
|
||||||
Number
|
Number
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Return correct question value.
|
||||||
|
//
|
||||||
|
Value->u8 = NewLegacyDev[Index3];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user