mirror of https://github.com/acidanthera/audk.git
Try to read key strike even when the TimeOuts value is zero, this will avoid BDS not get user input when TimeOuts value set to zero.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16304 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
8fd82c235d
commit
e0763f8757
|
@ -891,64 +891,62 @@ ShowProgress (
|
||||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;
|
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;
|
||||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Color;
|
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Color;
|
||||||
|
|
||||||
if (TimeoutDefault == 0) {
|
if (TimeoutDefault != 0) {
|
||||||
return EFI_TIMEOUT;
|
DEBUG ((EFI_D_INFO, "\n\nStart showing progress bar... Press any key to stop it! ...Zzz....\n"));
|
||||||
}
|
|
||||||
|
|
||||||
DEBUG ((EFI_D_INFO, "\n\nStart showing progress bar... Press any key to stop it! ...Zzz....\n"));
|
SetMem (&Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);
|
||||||
|
SetMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);
|
||||||
|
SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);
|
||||||
|
|
||||||
SetMem (&Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);
|
TmpStr = GetStringById (STRING_TOKEN (STR_START_BOOT_OPTION));
|
||||||
SetMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);
|
|
||||||
SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);
|
|
||||||
|
|
||||||
TmpStr = GetStringById (STRING_TOKEN (STR_START_BOOT_OPTION));
|
|
||||||
|
|
||||||
if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {
|
|
||||||
//
|
|
||||||
// Clear the progress status bar first
|
|
||||||
//
|
|
||||||
if (TmpStr != NULL) {
|
|
||||||
PlatformBdsShowProgress (Foreground, Background, TmpStr, Color, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
TimeoutRemain = TimeoutDefault;
|
|
||||||
while (TimeoutRemain != 0) {
|
|
||||||
DEBUG ((EFI_D_INFO, "Showing progress bar...Remaining %d second!\n", TimeoutRemain));
|
|
||||||
|
|
||||||
Status = WaitForSingleEvent (gST->ConIn->WaitForKey, ONE_SECOND);
|
|
||||||
if (Status != EFI_TIMEOUT) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
TimeoutRemain--;
|
|
||||||
|
|
||||||
if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {
|
if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {
|
||||||
//
|
//
|
||||||
// Show progress
|
// Clear the progress status bar first
|
||||||
//
|
//
|
||||||
if (TmpStr != NULL) {
|
if (TmpStr != NULL) {
|
||||||
PlatformBdsShowProgress (
|
PlatformBdsShowProgress (Foreground, Background, TmpStr, Color, 0, 0);
|
||||||
Foreground,
|
|
||||||
Background,
|
|
||||||
TmpStr,
|
|
||||||
Color,
|
|
||||||
((TimeoutDefault - TimeoutRemain) * 100 / TimeoutDefault),
|
|
||||||
0
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (TmpStr != NULL) {
|
|
||||||
gBS->FreePool (TmpStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
TimeoutRemain = TimeoutDefault;
|
||||||
// Timeout expired
|
while (TimeoutRemain != 0) {
|
||||||
//
|
DEBUG ((EFI_D_INFO, "Showing progress bar...Remaining %d second!\n", TimeoutRemain));
|
||||||
if (TimeoutRemain == 0) {
|
|
||||||
return EFI_TIMEOUT;
|
Status = WaitForSingleEvent (gST->ConIn->WaitForKey, ONE_SECOND);
|
||||||
|
if (Status != EFI_TIMEOUT) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
TimeoutRemain--;
|
||||||
|
|
||||||
|
if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {
|
||||||
|
//
|
||||||
|
// Show progress
|
||||||
|
//
|
||||||
|
if (TmpStr != NULL) {
|
||||||
|
PlatformBdsShowProgress (
|
||||||
|
Foreground,
|
||||||
|
Background,
|
||||||
|
TmpStr,
|
||||||
|
Color,
|
||||||
|
((TimeoutDefault - TimeoutRemain) * 100 / TimeoutDefault),
|
||||||
|
0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TmpStr != NULL) {
|
||||||
|
gBS->FreePool (TmpStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Timeout expired
|
||||||
|
//
|
||||||
|
if (TimeoutRemain == 0) {
|
||||||
|
return EFI_TIMEOUT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue