EFI_STATUS Status;\r
QEMU_VIDEO_PRIVATE_DATA *Private;\r
\r
+ if (NumberOfChildren == 0) {\r
+ //\r
+ // Close the PCI I/O Protocol\r
+ //\r
+ gBS->CloseProtocol (\r
+ Controller,\r
+ &gEfiPciIoProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ Controller\r
+ );\r
+ return EFI_SUCCESS;\r
+ }\r
+\r
+ //\r
+ // free all resources for whose access we need the child handle, because the\r
+ // child handle is going away\r
+ //\r
+ ASSERT (NumberOfChildren == 1);\r
Status = gBS->OpenProtocol (\r
- Controller,\r
+ ChildHandleBuffer[0],\r
&gEfiGraphicsOutputProtocolGuid,\r
(VOID **) &GraphicsOutput,\r
This->DriverBindingHandle,\r
// Get our private context information\r
//\r
Private = QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS (GraphicsOutput);\r
+ ASSERT (Private->Handle == ChildHandleBuffer[0]);\r
\r
QemuVideoGraphicsOutputDestructor (Private);\r
//\r
NULL\r
);\r
\r
- //\r
- // Close the PCI I/O Protocol\r
- //\r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiPciIoProtocolGuid,\r
- This->DriverBindingHandle,\r
- Controller\r
- );\r
-\r
gBS->CloseProtocol (\r
Controller,\r
&gEfiPciIoProtocolGuid,\r