MdeModulePkg/BootMaintUiLib: Update menus when open BMM form

BootMaintenanceManagerUiLib depend on the LeagcyBootMaintUiLib to show the
legacy menus. So we need to do the actions related to LegacyUi in BMM
after the LeagcyBootMaintUiLib have been initialized. So now : 1). update
menus (including legacy menus), 2) re-scan boot options (including legacy
boot option) when opening the BMM form. We think when opening BMM form,
the LeagcyBootMaintUiLib must have been initialized.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Eric Dong <eric.dong@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>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Dandan Bi
2016-06-30 11:37:56 +08:00
committed by Star Zeng
parent 237e849da4
commit 984cb6462a
3 changed files with 46 additions and 9 deletions

View File

@@ -84,6 +84,7 @@ BMM_CALLBACK_DATA gBootMaintenancePrivate = {
BMM_CALLBACK_DATA *mBmmCallbackInfo = &gBootMaintenancePrivate;
BOOLEAN mAllMenuInit = FALSE;
BOOLEAN mFirstEnterBMMForm = FALSE;
/**
Init all memu.
@@ -105,6 +106,16 @@ FreeAllMenu (
VOID
);
/**
Update the menus in the BMM page.
**/
VOID
CustomizeMenus (
VOID
);
/**
This function will change video resolution and text mode
according to defined setup mode or defined boot mode
@@ -874,14 +885,33 @@ BootMaintCallback (
UINTN Index;
EFI_DEVICE_PATH_PROTOCOL * File;
if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {
if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED && Action != EFI_BROWSER_ACTION_FORM_OPEN) {
//
// Do nothing for other UEFI Action. Only do call back when data is changed.
// Do nothing for other UEFI Action. Only do call back when data is changed or the form is open.
//
return EFI_UNSUPPORTED;
}
Private = BMM_CALLBACK_DATA_FROM_THIS (This);
if (Action == EFI_BROWSER_ACTION_FORM_OPEN) {
if (QuestionId == KEY_VALUE_TRIGGER_FORM_OPEN_ACTION) {
if (!mFirstEnterBMMForm) {
//
// BMMUiLib depends on LegacyUi library to show legacy menus.
// If we want to show Legacy menus correctly in BMM page,
// we must do it after the LegacyUi library has already been initialized.
// Opening the BMM form is the appropriate time that the LegacyUi library has already been initialized.
// So we do the tasks which are related to legacy menus here.
// 1. Update the menus (including legacy munu) show in BootMiantenanceManager page.
// 2. Re-scan the BootOption menus (including the legacy boot option).
//
CustomizeMenus ();
BOpt_GetBootOptions (Private);
mFirstEnterBMMForm = TRUE;
}
}
}
//
// Retrive uncommitted data from Form Browser
//
@@ -1226,11 +1256,6 @@ InitializeBmmConfig (
CallbackData->BmmFakeNvData.ForceReconnect = TRUE;
//
// Update the menus.
//
CustomizeMenus ();
//
// Backup Initialize BMM configuartion data to BmmOldFakeNVData
//