mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/BMMUiLib: Remove old useless data before new save action
There exits the case that when saving changes in form A, the old saved data in form B are not cleaned, will be saved again with the new save. Thus incorrect UI behavior will be shown. This patch is to remove some useless data. https://bugzilla.tianocore.org/show_bug.cgi?id=385 Cc: Eric Dong <eric.dong@intel.com> Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
This commit is contained in:
parent
bf342907c8
commit
85520606ad
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
The functions for Boot Maintainence Main menu.
|
||||
|
||||
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -1214,9 +1214,11 @@ BootMaintCallback (
|
|||
}
|
||||
|
||||
if (QuestionId == KEY_VALUE_SAVE_AND_EXIT_BOOT) {
|
||||
CleanUselessBeforeSubmit (Private);
|
||||
CurrentFakeNVMap->BootOptionChanged = FALSE;
|
||||
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;
|
||||
} else if (QuestionId == KEY_VALUE_SAVE_AND_EXIT_DRIVER) {
|
||||
CleanUselessBeforeSubmit (Private);
|
||||
CurrentFakeNVMap->DriverOptionChanged = FALSE;
|
||||
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;
|
||||
} else if (QuestionId == KEY_VALUE_NO_SAVE_AND_EXIT_DRIVER) {
|
||||
|
@ -1269,6 +1271,7 @@ BootMaintCallback (
|
|||
case KEY_VALUE_SAVE_AND_EXIT:
|
||||
case KEY_VALUE_NO_SAVE_AND_EXIT:
|
||||
if (QuestionId == KEY_VALUE_SAVE_AND_EXIT) {
|
||||
CleanUselessBeforeSubmit (Private);
|
||||
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;
|
||||
} else if (QuestionId == KEY_VALUE_NO_SAVE_AND_EXIT) {
|
||||
DiscardChangeHandler (Private, CurrentFakeNVMap);
|
||||
|
@ -1370,6 +1373,36 @@ DiscardChangeHandler (
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
This function is to clean some useless data before submit changes.
|
||||
|
||||
@param Private The BMM context data.
|
||||
|
||||
**/
|
||||
VOID
|
||||
CleanUselessBeforeSubmit (
|
||||
IN BMM_CALLBACK_DATA *Private
|
||||
)
|
||||
{
|
||||
UINT16 Index;
|
||||
if (Private->BmmPreviousPageId != FORM_BOOT_DEL_ID) {
|
||||
for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {
|
||||
if (Private->BmmFakeNvData.BootOptionDel[Index] && !Private->BmmFakeNvData.BootOptionDelMark[Index]) {
|
||||
Private->BmmFakeNvData.BootOptionDel[Index] = FALSE;
|
||||
Private->BmmOldFakeNVData.BootOptionDel[Index] = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Private->BmmPreviousPageId != FORM_DRV_DEL_ID) {
|
||||
for (Index = 0; Index < DriverOptionMenu.MenuNumber; Index++) {
|
||||
if (Private->BmmFakeNvData.DriverOptionDel[Index] && !Private->BmmFakeNvData.DriverOptionDelMark[Index]) {
|
||||
Private->BmmFakeNvData.DriverOptionDel[Index] = FALSE;
|
||||
Private->BmmOldFakeNVData.DriverOptionDel[Index] = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Update the menus in the BMM page.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
Header file for boot maintenance module.
|
||||
|
||||
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -1049,6 +1049,18 @@ DiscardChangeHandler (
|
|||
IN BMM_FAKE_NV_DATA *CurrentFakeNVMap
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
This function is to clean some useless data before submit changes.
|
||||
|
||||
@param Private The BMM context data.
|
||||
|
||||
**/
|
||||
VOID
|
||||
CleanUselessBeforeSubmit (
|
||||
IN BMM_CALLBACK_DATA *Private
|
||||
);
|
||||
|
||||
/**
|
||||
Dispatch the display to the next page based on NewPageId.
|
||||
|
||||
|
|
Loading…
Reference in New Issue