Add uninstalling GOP and UGA protocol in Consplitter Stop ().

Signed-off-by: Li Elvin <elvin.li@intel.com>
Reviewed-by: Tian Hot <hot.tian@intel.com>
Reviewed-by: Ni Ruiyu <ruiyu.ni@intel.com>


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13883 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
li-elvin 2012-10-25 06:16:14 +00:00
parent e6fa789014
commit cc1a5b86ff
1 changed files with 29 additions and 0 deletions

View File

@ -3199,6 +3199,35 @@ ConSplitterTextOutDeleteDevice (
return EFI_NOT_FOUND;
}
if ((Private->CurrentNumberOfGraphicsOutput == 0) && (Private->CurrentNumberOfUgaDraw == 0)) {
//
// If there is not any physical GOP and UGA device in system,
// Consplitter GOP or UGA protocol will be uninstalled
//
if (!FeaturePcdGet (PcdConOutGopSupport)) {
Status = gBS->UninstallProtocolInterface (
Private->VirtualHandle,
&gEfiUgaDrawProtocolGuid,
&Private->UgaDraw
);
} else if (!FeaturePcdGet (PcdConOutUgaSupport)) {
Status = gBS->UninstallProtocolInterface (
Private->VirtualHandle,
&gEfiGraphicsOutputProtocolGuid,
&Private->GraphicsOutput
);
} else {
Status = gBS->UninstallMultipleProtocolInterfaces (
Private->VirtualHandle,
&gEfiUgaDrawProtocolGuid,
&Private->UgaDraw,
&gEfiGraphicsOutputProtocolGuid,
&Private->GraphicsOutput,
NULL
);
}
}
if (CurrentNumOfConsoles == 0) {
//
// If the number of consoles is zero, reset all parameters