]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BootMaintenanceMangerUiLib: Save mode info for later use.
authorDong, Eric <eric.dong@intel.com>
Wed, 18 May 2016 05:12:41 +0000 (13:12 +0800)
committerLiming Gao <liming.gao@intel.com>
Thu, 19 May 2016 04:33:33 +0000 (12:33 +0800)
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>
MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenance.c
MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf

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