BootMaintenanceMangerUiLib: Save mode info for later use.

In current code, we use different output modes for boot phase
and setup phase. When split BootMaintenanceMangerUiLib from
UiApp code, we not add logic to save the boot phase mode info
which will be used later. This change add this logic.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Dong, Eric 2016-05-18 13:12:41 +08:00 committed by Liming Gao
parent cb9fcac0ea
commit 8c53b5e67c
2 changed files with 78 additions and 1 deletions

View File

@ -30,6 +30,8 @@ UINT32 mBmmSetupTextModeRow = 0;
UINT32 mBmmSetupHorizontalResolution = 0;
UINT32 mBmmSetupVerticalResolution = 0;
BOOLEAN mBmmModeInitialized = FALSE;
EFI_DEVICE_PATH_PROTOCOL EndDevicePath[] = {
{
END_DEVICE_PATH_TYPE,
@ -1277,6 +1279,77 @@ FreeAllMenu (
mAllMenuInit = FALSE;
}
/**
Initial the boot mode related parameters.
**/
VOID
BmmInitialBootModeInfo (
VOID
)
{
EFI_STATUS Status;
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *SimpleTextOut;
UINTN BootTextColumn;
UINTN BootTextRow;
if (mBmmModeInitialized) {
return;
}
//
// After the console is ready, get current video resolution
// and text mode before launching setup at first time.
//
Status = gBS->HandleProtocol (
gST->ConsoleOutHandle,
&gEfiGraphicsOutputProtocolGuid,
(VOID**)&GraphicsOutput
);
if (EFI_ERROR (Status)) {
GraphicsOutput = NULL;
}
Status = gBS->HandleProtocol (
gST->ConsoleOutHandle,
&gEfiSimpleTextOutProtocolGuid,
(VOID**)&SimpleTextOut
);
if (EFI_ERROR (Status)) {
SimpleTextOut = NULL;
}
if (GraphicsOutput != NULL) {
//
// Get current video resolution and text mode.
//
mBmmBootHorizontalResolution = GraphicsOutput->Mode->Info->HorizontalResolution;
mBmmBootVerticalResolution = GraphicsOutput->Mode->Info->VerticalResolution;
}
if (SimpleTextOut != NULL) {
Status = SimpleTextOut->QueryMode (
SimpleTextOut,
SimpleTextOut->Mode->Mode,
&BootTextColumn,
&BootTextRow
);
mBmmBootTextModeColumn = (UINT32)BootTextColumn;
mBmmBootTextModeRow = (UINT32)BootTextRow;
}
//
// Get user defined text mode for setup.
//
mBmmSetupHorizontalResolution = PcdGet32 (PcdSetupVideoHorizontalResolution);
mBmmSetupVerticalResolution = PcdGet32 (PcdSetupVideoVerticalResolution);
mBmmSetupTextModeColumn = PcdGet32 (PcdSetupConOutColumn);
mBmmSetupTextModeRow = PcdGet32 (PcdSetupConOutRow);
mBmmModeInitialized = TRUE;
}
/**
Install Boot Maintenance Manager Menu driver.
@ -1365,6 +1438,8 @@ BootMaintenanceManagerUiLibConstructor (
//
InitializeBmmConfig(mBmmCallbackInfo);
BmmInitialBootModeInfo();
return EFI_SUCCESS;
}

View File

@ -101,4 +101,6 @@
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution ## CONSUMES