mirror of https://github.com/acidanthera/audk.git
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 Bit;
|
||||
UINT16 NewValuePos;
|
||||
UINT16 Index3;
|
||||
UINT16 Index2;
|
||||
UINT16 Index;
|
||||
UINT8 *OldLegacyDev;
|
||||
UINT8 *NewLegacyDev;
|
||||
UINT8 *DisMap;
|
||||
EFI_FORM_ID FormId;
|
||||
|
||||
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
|
||||
//
|
||||
if (FORM_SET_FD_ORDER_ID == Private->BmmPreviousPageId ||
|
||||
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)) )
|
||||
) {
|
||||
if ((QuestionId >= LEGACY_FD_QUESTION_ID) && (QuestionId < LEGACY_BEV_QUESTION_ID + MAX_MENU_NUMBER)) {
|
||||
|
||||
DisMap = Private->BmmOldFakeNVData.DisableMap;
|
||||
|
||||
FormId = Private->BmmPreviousPageId;
|
||||
if (FormId == FORM_BOOT_SETUP_ID) {
|
||||
FormId = Private->BmmCurrentPageId;
|
||||
}
|
||||
|
||||
switch (FormId) {
|
||||
case FORM_SET_FD_ORDER_ID:
|
||||
if (QuestionId >= LEGACY_FD_QUESTION_ID && QuestionId < LEGACY_FD_QUESTION_ID + MAX_MENU_NUMBER) {
|
||||
Number = (UINT16) LegacyFDMenu.MenuNumber;
|
||||
OldLegacyDev = Private->BmmOldFakeNVData.LegacyFD;
|
||||
NewLegacyDev = CurrentFakeNVMap->LegacyFD;
|
||||
break;
|
||||
|
||||
case FORM_SET_HD_ORDER_ID:
|
||||
} else if (QuestionId >= LEGACY_HD_QUESTION_ID && QuestionId < LEGACY_HD_QUESTION_ID + MAX_MENU_NUMBER) {
|
||||
Number = (UINT16) LegacyHDMenu.MenuNumber;
|
||||
OldLegacyDev = Private->BmmOldFakeNVData.LegacyHD;
|
||||
NewLegacyDev = CurrentFakeNVMap->LegacyHD;
|
||||
break;
|
||||
|
||||
case FORM_SET_CD_ORDER_ID:
|
||||
} else if (QuestionId >= LEGACY_CD_QUESTION_ID && QuestionId < LEGACY_CD_QUESTION_ID + MAX_MENU_NUMBER) {
|
||||
Number = (UINT16) LegacyCDMenu.MenuNumber;
|
||||
OldLegacyDev = Private->BmmOldFakeNVData.LegacyCD;
|
||||
NewLegacyDev = CurrentFakeNVMap->LegacyCD;
|
||||
break;
|
||||
|
||||
case FORM_SET_NET_ORDER_ID:
|
||||
} else if (QuestionId >= LEGACY_NET_QUESTION_ID && QuestionId < LEGACY_NET_QUESTION_ID + MAX_MENU_NUMBER) {
|
||||
Number = (UINT16) LegacyNETMenu.MenuNumber;
|
||||
OldLegacyDev = Private->BmmOldFakeNVData.LegacyNET;
|
||||
NewLegacyDev = CurrentFakeNVMap->LegacyNET;
|
||||
break;
|
||||
|
||||
case FORM_SET_BEV_ORDER_ID:
|
||||
} else if (QuestionId >= LEGACY_BEV_QUESTION_ID && QuestionId < LEGACY_BEV_QUESTION_ID + MAX_MENU_NUMBER) {
|
||||
Number = (UINT16) LegacyBEVMenu.MenuNumber;
|
||||
OldLegacyDev = Private->BmmOldFakeNVData.LegacyBEV;
|
||||
NewLegacyDev = CurrentFakeNVMap->LegacyBEV;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
// First, find the different position
|
||||
|
@ -455,6 +429,7 @@ BootMaintCallback (
|
|||
// To prevent DISABLE appears in the middle of the list
|
||||
// we should perform a re-ordering
|
||||
//
|
||||
Index3 = Index;
|
||||
Index = 0;
|
||||
while (Index < Number) {
|
||||
if (0xFF != NewLegacyDev[Index]) {
|
||||
|
@ -485,6 +460,11 @@ BootMaintCallback (
|
|||
NewLegacyDev,
|
||||
Number
|
||||
);
|
||||
|
||||
//
|
||||
// Return correct question value.
|
||||
//
|
||||
Value->u8 = NewLegacyDev[Index3];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue