]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c
Fix the issue that the GOP produced by ConSplitter requires SetMode before GetMode...
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitterGraphics.c
index 31b8468e059bd454485a5bc9a587a56bd864f2f8..89cef729e9b455d6630e2f4c1107e1bd7a88da42 100644 (file)
@@ -1,8 +1,8 @@
 /** @file\r
   Support for Graphics output spliter.\r
   \r
-Copyright (c) 2006 - 2009, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
 http://opensource.org/licenses/bsd-license.php\r
@@ -30,14 +30,13 @@ CHAR16 mCrLfString[3] = { CHAR_CARRIAGE_RETURN, CHAR_LINEFEED, CHAR_NULL };
   @retval EFI_SUCCESS           Mode information returned.\r
   @retval EFI_BUFFER_TOO_SMALL  The Info buffer was too small.\r
   @retval EFI_DEVICE_ERROR      A hardware error occurred trying to retrieve the video mode.\r
-  @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()\r
   @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
   @retval EFI_OUT_OF_RESOURCES  No resource available.\r
 \r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterGraphicsOutputQueryMode (\r
+ConSplitterGraphicsOutputQueryMode (\r
   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL          *This,\r
   IN  UINT32                                ModeNumber,\r
   OUT UINTN                                 *SizeOfInfo,\r
@@ -55,10 +54,6 @@ ConSpliterGraphicsOutputQueryMode (
   //\r
   Private = GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
 \r
-  if (Private->HardwareNeedsStarting) {\r
-    return EFI_NOT_STARTED;\r
-  }\r
-\r
   *Info = AllocatePool (sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION));\r
   if (*Info == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
@@ -87,7 +82,7 @@ ConSpliterGraphicsOutputQueryMode (
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterGraphicsOutputSetMode (\r
+ConSplitterGraphicsOutputSetMode (\r
   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
   IN  UINT32                       ModeNumber\r
   )\r
@@ -107,10 +102,6 @@ ConSpliterGraphicsOutputSetMode (
     return EFI_UNSUPPORTED;\r
   }\r
 \r
-  if (ModeNumber == This->Mode->Mode) {\r
-    return EFI_SUCCESS;\r
-  }\r
-\r
   Private = GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
   Mode = &Private->GraphicsOutputModeBuffer[ModeNumber];\r
 \r
@@ -168,8 +159,6 @@ ConSpliterGraphicsOutputSetMode (
   // These items will be initialized/updated when a new GOP device is added into ConsoleSplitter.\r
   //\r
 \r
-  Private->HardwareNeedsStarting = FALSE;\r
-\r
   return ReturnStatus;\r
 }\r
 \r
@@ -223,7 +212,7 @@ ConSpliterGraphicsOutputSetMode (
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterGraphicsOutputBlt (\r
+ConSplitterGraphicsOutputBlt (\r
   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL                  *This,\r
   IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL                 *BltBuffer, OPTIONAL\r
   IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION             BltOperation,\r
@@ -237,14 +226,20 @@ ConSpliterGraphicsOutputBlt (
   )\r
 {\r
   EFI_STATUS                      Status;\r
-  EFI_STATUS                      ReturnStatus = EFI_DEVICE_ERROR;\r
+  EFI_STATUS                      ReturnStatus;\r
   TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private;\r
   UINTN                           Index;\r
   EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput;\r
   EFI_UGA_DRAW_PROTOCOL           *UgaDraw;\r
 \r
+  if (This == NULL || ((UINTN) BltOperation) >= EfiGraphicsOutputBltOperationMax) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+  \r
   Private = GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
 \r
+  ReturnStatus = EFI_SUCCESS;\r
+\r
   //\r
   // return the worst status met\r
   //\r
@@ -317,7 +312,7 @@ ConSpliterGraphicsOutputBlt (
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterUgaDrawGetMode (\r
+ConSplitterUgaDrawGetMode (\r
   IN  EFI_UGA_DRAW_PROTOCOL           *This,\r
   OUT UINT32                          *HorizontalResolution,\r
   OUT UINT32                          *VerticalResolution,\r
@@ -363,7 +358,7 @@ ConSpliterUgaDrawGetMode (
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterUgaDrawSetMode (\r
+ConSplitterUgaDrawSetMode (\r
   IN  EFI_UGA_DRAW_PROTOCOL           *This,\r
   IN UINT32                           HorizontalResolution,\r
   IN UINT32                           VerticalResolution,\r
@@ -491,7 +486,7 @@ ConSpliterUgaDrawSetMode (
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-ConSpliterUgaDrawBlt (\r
+ConSplitterUgaDrawBlt (\r
   IN  EFI_UGA_DRAW_PROTOCOL                         *This,\r
   IN  EFI_UGA_PIXEL                                 *BltBuffer, OPTIONAL\r
   IN  EFI_UGA_BLT_OPERATION                         BltOperation,\r
@@ -533,7 +528,7 @@ ConSpliterUgaDrawBlt (
                               );\r
       if (EFI_ERROR (Status)) {\r
         ReturnStatus = Status;\r
-      } else if (BltOperation == EfiBltVideoToBltBuffer) {\r
+      } else if (BltOperation == EfiUgaVideoToBltBuffer) {\r
         //\r
         // Only need to read the data into buffer one time\r
         //\r