mirror of https://github.com/acidanthera/audk.git
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:
parent
237e849da4
commit
984cb6462a
|
@ -84,6 +84,7 @@ BMM_CALLBACK_DATA gBootMaintenancePrivate = {
|
||||||
|
|
||||||
BMM_CALLBACK_DATA *mBmmCallbackInfo = &gBootMaintenancePrivate;
|
BMM_CALLBACK_DATA *mBmmCallbackInfo = &gBootMaintenancePrivate;
|
||||||
BOOLEAN mAllMenuInit = FALSE;
|
BOOLEAN mAllMenuInit = FALSE;
|
||||||
|
BOOLEAN mFirstEnterBMMForm = FALSE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Init all memu.
|
Init all memu.
|
||||||
|
@ -105,6 +106,16 @@ FreeAllMenu (
|
||||||
VOID
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
Update the menus in the BMM page.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
CustomizeMenus (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function will change video resolution and text mode
|
This function will change video resolution and text mode
|
||||||
according to defined setup mode or defined boot mode
|
according to defined setup mode or defined boot mode
|
||||||
|
@ -874,14 +885,33 @@ BootMaintCallback (
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
EFI_DEVICE_PATH_PROTOCOL * File;
|
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;
|
return EFI_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Private = BMM_CALLBACK_DATA_FROM_THIS (This);
|
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
|
// Retrive uncommitted data from Form Browser
|
||||||
//
|
//
|
||||||
|
@ -1226,11 +1256,6 @@ InitializeBmmConfig (
|
||||||
|
|
||||||
CallbackData->BmmFakeNvData.ForceReconnect = TRUE;
|
CallbackData->BmmFakeNvData.ForceReconnect = TRUE;
|
||||||
|
|
||||||
//
|
|
||||||
// Update the menus.
|
|
||||||
//
|
|
||||||
CustomizeMenus ();
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Backup Initialize BMM configuartion data to BmmOldFakeNVData
|
// Backup Initialize BMM configuartion data to BmmOldFakeNVData
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
///** @file
|
///** @file
|
||||||
// Boot Maintenance Utility Formset
|
// Boot Maintenance Utility Formset
|
||||||
//
|
//
|
||||||
// Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
|
// Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// 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
|
// which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -27,6 +27,17 @@ formset
|
||||||
|
|
||||||
form formid = FORM_MAIN_ID,
|
form formid = FORM_MAIN_ID,
|
||||||
title = STRING_TOKEN(STR_FORM_MAIN_TITLE);
|
title = STRING_TOKEN(STR_FORM_MAIN_TITLE);
|
||||||
|
//
|
||||||
|
// Add this invisible text in order to indicate enter Boot Maintenance Manager form.
|
||||||
|
// To trigger the form open action.
|
||||||
|
//
|
||||||
|
suppressif TRUE;
|
||||||
|
text
|
||||||
|
help = STRING_TOKEN(STR_NONE),
|
||||||
|
text = STRING_TOKEN(STR_NONE),
|
||||||
|
flags = INTERACTIVE,
|
||||||
|
key = KEY_VALUE_TRIGGER_FORM_OPEN_ACTION;
|
||||||
|
endif;
|
||||||
|
|
||||||
label LABEL_FORM_MAIN_START;
|
label LABEL_FORM_MAIN_START;
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
Formset guids, form id and VarStore data structure for Boot Maintenance Manager.
|
Formset guids, form id and VarStore data structure for Boot Maintenance Manager.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -72,6 +72,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
#define KEY_VALUE_NO_SAVE_AND_EXIT_BOOT 0x1114
|
#define KEY_VALUE_NO_SAVE_AND_EXIT_BOOT 0x1114
|
||||||
#define KEY_VALUE_SAVE_AND_EXIT_DRIVER 0x1115
|
#define KEY_VALUE_SAVE_AND_EXIT_DRIVER 0x1115
|
||||||
#define KEY_VALUE_NO_SAVE_AND_EXIT_DRIVER 0x1116
|
#define KEY_VALUE_NO_SAVE_AND_EXIT_DRIVER 0x1116
|
||||||
|
#define KEY_VALUE_TRIGGER_FORM_OPEN_ACTION 0x1117
|
||||||
|
|
||||||
#define MAXIMUM_NORMAL_KEY_VALUE 0x11FF
|
#define MAXIMUM_NORMAL_KEY_VALUE 0x11FF
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue