Mode->FrameBufferSize = Mode->FrameBufferSize * ((ModeData->ColorDepth + 7) / 8);\r
DEBUG ((EFI_D_INFO, "FrameBufferBase: 0x%x, FrameBufferSize: 0x%x\n", Mode->FrameBufferBase, Mode->FrameBufferSize));\r
\r
+ FreePool (FrameBufDesc);\r
return EFI_SUCCESS;\r
}\r
\r
\r
Private = QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS (This);\r
\r
- if (Private->HardwareNeedsStarting) {\r
- return EFI_NOT_STARTED;\r
- }\r
-\r
if (Info == NULL || SizeOfInfo == NULL || ModeNumber >= This->Mode->MaxMode) {\r
return EFI_INVALID_PARAMETER;\r
}\r
gBS->FreePool (Private->LineBuffer);\r
}\r
\r
- Private->LineBuffer = NULL;\r
Private->LineBuffer = AllocatePool (4 * ModeData->HorizontalResolution);\r
if (Private->LineBuffer == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
switch (Private->Variant) {\r
case QEMU_VIDEO_CIRRUS_5430:\r
case QEMU_VIDEO_CIRRUS_5446:\r
- InitializeCirrusGraphicsMode (Private, &QemuVideoCirrusModes[ModeData->ModeNumber]);\r
+ InitializeCirrusGraphicsMode (Private, &QemuVideoCirrusModes[ModeData->InternalModeIndex]);\r
break;\r
case QEMU_VIDEO_BOCHS_MMIO:\r
case QEMU_VIDEO_BOCHS:\r
- InitializeBochsGraphicsMode (Private, &QemuVideoBochsModes[ModeData->ModeNumber]);\r
+ InitializeBochsGraphicsMode (Private, &QemuVideoBochsModes[ModeData->InternalModeIndex]);\r
break;\r
default:\r
ASSERT (FALSE);\r
This->Mode->Info\r
);\r
\r
- Private->HardwareNeedsStarting = FALSE;\r
-\r
return EFI_SUCCESS;\r
}\r
\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
Status = gBS->AllocatePool (\r
EfiBootServicesData,\r
sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION),\r
(VOID **) &Private->GraphicsOutput.Mode->Info\r
);\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ goto FreeMode;\r
}\r
Private->GraphicsOutput.Mode->MaxMode = (UINT32) Private->MaxMode;\r
Private->GraphicsOutput.Mode->Mode = GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER;\r
- Private->HardwareNeedsStarting = TRUE;\r
Private->LineBuffer = NULL;\r
\r
//\r
// Initialize the hardware\r
//\r
- GraphicsOutput->SetMode (GraphicsOutput, 0);\r
+ Status = GraphicsOutput->SetMode (GraphicsOutput, 0);\r
+ if (EFI_ERROR (Status)) {\r
+ goto FreeInfo;\r
+ }\r
+\r
DrawLogo (\r
Private,\r
Private->ModeData[Private->GraphicsOutput.Mode->Mode].HorizontalResolution,\r
);\r
\r
return EFI_SUCCESS;\r
+\r
+FreeInfo:\r
+ FreePool (Private->GraphicsOutput.Mode->Info);\r
+\r
+FreeMode:\r
+ FreePool (Private->GraphicsOutput.Mode);\r
+ Private->GraphicsOutput.Mode = NULL;\r
+\r
+ return Status;\r
}\r
\r
EFI_STATUS\r
\r
--*/\r
{\r
+ if (Private->LineBuffer != NULL) {\r
+ FreePool (Private->LineBuffer);\r
+ }\r
+\r
if (Private->GraphicsOutput.Mode != NULL) {\r
if (Private->GraphicsOutput.Mode->Info != NULL) {\r
gBS->FreePool (Private->GraphicsOutput.Mode->Info);\r