//\r
// When new console device is added, the new mode will be set later,\r
// so put current mode back to init state.\r
- // \r
+ //\r
ConOutPrivate->TextOutMode.Mode = 0xFF;\r
\r
Status = ConSplitterGrowBuffer (\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
+ GraphicsOutput = NULL;\r
+ UgaDraw = NULL;\r
//\r
// Try to Open Graphics Output protocol\r
//\r
mConOut.VirtualHandle,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
);\r
- if (EFI_ERROR (Status)) {\r
- GraphicsOutput = NULL;\r
- }\r
- //\r
- // Open UGA_DRAW protocol\r
- //\r
- Status = gBS->OpenProtocol (\r
- ControllerHandle,\r
- &gEfiUgaDrawProtocolGuid,\r
- (VOID **) &UgaDraw,\r
- This->DriverBindingHandle,\r
- mConOut.VirtualHandle,\r
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
- if (EFI_ERROR (Status)) {\r
- UgaDraw = NULL;\r
+\r
+ if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
+ //\r
+ // Open UGA_DRAW protocol\r
+ //\r
+ Status = gBS->OpenProtocol (\r
+ ControllerHandle,\r
+ &gEfiUgaDrawProtocolGuid,\r
+ (VOID **) &UgaDraw,\r
+ This->DriverBindingHandle,\r
+ mConOut.VirtualHandle,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
}\r
\r
//\r
// so put current mode back to init state.\r
//\r
mConOut.TextOutMode.Mode = 0xFF;\r
- \r
+\r
//\r
// If both ConOut and StdErr incorporate the same Text Out device,\r
// their MaxMode and QueryData should be the intersection of both.\r
Status = ConSplitterTextOutAddDevice (&mConOut, TextOut, GraphicsOutput, UgaDraw);\r
ConSplitterTextOutSetAttribute (&mConOut.TextOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));\r
\r
- if (FeaturePcdGet (PcdConOutUgaSupport)) {\r
+ if (FeaturePcdGet (PcdConOutUgaSupport) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
//\r
// Match the UGA mode data of ConOut with the current mode\r
//\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
- \r
+\r
//\r
// When new console device is added, the new mode will be set later,\r
// so put current mode back to init state.\r
//\r
mStdErr.TextOutMode.Mode = 0xFF;\r
- \r
+\r
//\r
// If both ConOut and StdErr incorporate the same Text Out device,\r
// their MaxMode and QueryData should be the intersection of both.\r
}\r
}\r
}\r
- if (UgaDraw != NULL) {\r
+ if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
//\r
// Graphics console driver can ensure the same mode for all GOP devices\r
// so we can get the current mode from this video device\r
if (GraphicsOutput != NULL) {\r
Private->CurrentNumberOfGraphicsOutput++;\r
}\r
- if (UgaDraw != NULL) {\r
+ if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Private->CurrentNumberOfUgaDraw++;\r
}\r
\r
\r
None\r
\r
---*/ \r
+--*/\r
{\r
UINTN Col;\r
UINTN Row;\r
EFI_STATUS Status;\r
CONSOLE_OUT_MODE *ModeInfo;\r
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;\r
- \r
+\r
PreferMode = 0xFF;\r
BaseMode = 0xFF;\r
TextOut = &Private->TextOut;\r
);\r
\r
//\r
- // Set to the default mode 80 x 25 required by EFI/UEFI spec; \r
+ // Set to the default mode 80 x 25 required by EFI/UEFI spec;\r
// user can also define other valid default console mode here.\r
- // \r
+ //\r
if (EFI_ERROR(Status)) {\r
ModeInfo->Column = 80;\r
ModeInfo->Row = 25;\r
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
sizeof (CONSOLE_OUT_MODE),\r
ModeInfo\r
- ); \r
+ );\r
}\r
- \r
+\r
for (Mode = 0; Mode < MaxMode; Mode++) {\r
Status = TextOut->QueryMode (TextOut, Mode, &Col, &Row);\r
if (!EFI_ERROR(Status)) {\r
}\r
}\r
}\r
- \r
+\r
Status = TextOut->SetMode (TextOut, PreferMode);\r
- \r
+\r
//\r
// if current mode setting is failed, default 80x25 mode will be set.\r
//\r
if (EFI_ERROR(Status)) {\r
Status = TextOut->SetMode (TextOut, BaseMode);\r
ASSERT(!EFI_ERROR(Status));\r
- \r
+\r
ModeInfo->Column = 80;\r
ModeInfo->Row = 25;\r
- \r
+\r
//\r
// Update ConOutMode variable\r
//\r
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
sizeof (CONSOLE_OUT_MODE),\r
ModeInfo\r
- ); \r
+ );\r
}\r
\r
gBS->FreePool (ModeInfo);\r
}\r
}\r
if (FeaturePcdGet (PcdConOutUgaSupport)) {\r
- if (UgaDraw != NULL) {\r
+ if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Status = UgaDraw->GetMode (\r
UgaDraw,\r
&UgaHorizontalResolution,\r
}\r
\r
//\r
- // After adding new console device, all existing console devices should be \r
+ // After adding new console device, all existing console devices should be\r
// synced to the current shared mode.\r
//\r
ConsplitterSetConsoleOutMode (Private);\r
if (TextOutList->TextOut == TextOut) {\r
CopyMem (TextOutList, TextOutList + 1, sizeof (TEXT_OUT_AND_GOP_DATA) * Index);\r
CurrentNumOfConsoles--;\r
- if (TextOutList->UgaDraw != NULL) {\r
+ if (TextOutList->UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Private->CurrentNumberOfUgaDraw--;\r
}\r
if (TextOutList->GraphicsOutput != NULL) {\r