mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-28 08:04:07 +02:00
MdeModulePkg/BMUiLib: Check reset requirement before exiting UiApp
V2: Refine the comments. In UI page, some configuration change may require system reset. BootManagerUiLib misses this check before exiting UiApp to boot other boot options. Now add the check. 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: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
b2dcae4c57
commit
c51f5f17e6
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The boot manager reference implementation
|
The boot manager reference implementation
|
||||||
|
|
||||||
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
|
This program and the accompanying materials are licensed and made available under
|
||||||
the terms and conditions of the BSD License that accompanies this distribution.
|
the terms and conditions of the BSD License that accompanies this distribution.
|
||||||
The full text of the license may be found at
|
The full text of the license may be found at
|
||||||
@ -293,6 +293,50 @@ BmSetConsoleMode (
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
Check whether a reset is needed,if reset is needed, Popup a menu to notice user.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
BmSetupResetReminder (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_INPUT_KEY Key;
|
||||||
|
CHAR16 *StringBuffer1;
|
||||||
|
CHAR16 *StringBuffer2;
|
||||||
|
EFI_STATUS Status;
|
||||||
|
EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL *FormBrowserEx2;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Use BrowserEx2 protocol to check whether reset is required.
|
||||||
|
//
|
||||||
|
Status = gBS->LocateProtocol (&gEdkiiFormBrowserEx2ProtocolGuid, NULL, (VOID **) &FormBrowserEx2);
|
||||||
|
//
|
||||||
|
//check any reset required change is applied? if yes, reset system
|
||||||
|
//
|
||||||
|
if (!EFI_ERROR(Status) && FormBrowserEx2->IsResetRequired ()) {
|
||||||
|
StringBuffer1 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16));
|
||||||
|
ASSERT (StringBuffer1 != NULL);
|
||||||
|
StringBuffer2 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16));
|
||||||
|
ASSERT (StringBuffer2 != NULL);
|
||||||
|
StrCpyS (StringBuffer1, MAX_STRING_LEN, L"Configuration changed. Reset to apply it Now.");
|
||||||
|
StrCpyS (StringBuffer2, MAX_STRING_LEN, L"Press ENTER to reset");
|
||||||
|
//
|
||||||
|
// Popup a menu to notice user
|
||||||
|
//
|
||||||
|
do {
|
||||||
|
CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, StringBuffer1, StringBuffer2, NULL);
|
||||||
|
} while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN);
|
||||||
|
|
||||||
|
FreePool (StringBuffer1);
|
||||||
|
FreePool (StringBuffer2);
|
||||||
|
|
||||||
|
gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Group the legacy boot options in the BootOption.
|
Group the legacy boot options in the BootOption.
|
||||||
|
|
||||||
@ -781,6 +825,11 @@ BootManagerCallback (
|
|||||||
gST->ConOut->SetAttribute (gST->ConOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));
|
gST->ConOut->SetAttribute (gST->ConOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));
|
||||||
gST->ConOut->ClearScreen (gST->ConOut);
|
gST->ConOut->ClearScreen (gST->ConOut);
|
||||||
|
|
||||||
|
//
|
||||||
|
//check any reset required change is applied? if yes, reset system
|
||||||
|
//
|
||||||
|
BmSetupResetReminder ();
|
||||||
|
|
||||||
//
|
//
|
||||||
// parse the selected option
|
// parse the selected option
|
||||||
//
|
//
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The boot manager reference implementation
|
The boot manager reference implementation
|
||||||
|
|
||||||
Copyright (c) 2004 - 2015, 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
|
This program and the accompanying materials are licensed and made available under
|
||||||
the terms and conditions of the BSD License that accompanies this distribution.
|
the terms and conditions of the BSD License that accompanies this distribution.
|
||||||
The full text of the license may be found at
|
The full text of the license may be found at
|
||||||
@ -20,6 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
|
|
||||||
#include <Protocol/HiiConfigAccess.h>
|
#include <Protocol/HiiConfigAccess.h>
|
||||||
#include <Protocol/DevicePathToText.h>
|
#include <Protocol/DevicePathToText.h>
|
||||||
|
#include <Protocol/FormBrowserEx2.h>
|
||||||
|
|
||||||
#include <Library/PrintLib.h>
|
#include <Library/PrintLib.h>
|
||||||
#include <Library/DebugLib.h>
|
#include <Library/DebugLib.h>
|
||||||
@ -55,6 +56,7 @@ typedef struct {
|
|||||||
|
|
||||||
#define LABEL_BOOT_OPTION 0x00
|
#define LABEL_BOOT_OPTION 0x00
|
||||||
#define LABEL_BOOT_OPTION_END 0x01
|
#define LABEL_BOOT_OPTION_END 0x01
|
||||||
|
#define MAX_STRING_LEN 200
|
||||||
|
|
||||||
//
|
//
|
||||||
// Variable created with this flag will be "Efi:...."
|
// Variable created with this flag will be "Efi:...."
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
## @file
|
## @file
|
||||||
# Boot Manager Library used by UiApp.
|
# Boot Manager Library used by UiApp.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||||
# This program and the accompanying materials are licensed and made available under
|
# This program and the accompanying materials are licensed and made available under
|
||||||
# the terms and conditions of the BSD License that accompanies this distribution.
|
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||||
# The full text of the license may be found at
|
# The full text of the license may be found at
|
||||||
@ -56,6 +56,7 @@
|
|||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiHiiConfigAccessProtocolGuid ## CONSUMES
|
gEfiHiiConfigAccessProtocolGuid ## CONSUMES
|
||||||
gEfiDevicePathToTextProtocolGuid ## CONSUMES
|
gEfiDevicePathToTextProtocolGuid ## CONSUMES
|
||||||
|
gEdkiiFormBrowserEx2ProtocolGuid ## CONSUMES
|
||||||
|
|
||||||
[FeaturePcd]
|
[FeaturePcd]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user