提交 457c68dc 编写于 作者: M Mike Beaton

OpenCanopy: Restore screen clear on exit

https://github.com/acidanthera/bugtracker/issues/2231
上级 a0a25e59
...@@ -196,12 +196,19 @@ OcShowMenuByOc ( ...@@ -196,12 +196,19 @@ OcShowMenuByOc (
ASSERT (mGuiContext.BootEntry != NULL || mGuiContext.Refresh); ASSERT (mGuiContext.BootEntry != NULL || mGuiContext.Refresh);
// //
// Do not use this clear screen, since the convention (in Apple native picker, but also // There are reasons to prefer not to perform this screen clear:
// other parts of other pre-boot UI) is for each UI step which finishes to leave its own // - If starting macOS, boot.efi performs the same screen clear to the same UI theme colour
// graphics up for the next step to clear; this matches that, and gives a slightly smoother, // immediately afterwards anyway
// slightly faster UI experience. // - The native Apple picker does not clear its graphics before exit (i.e. does not do this)
// - Most OS booters in most circumstance perform their own screen clear
// - Each screen clear on a slow GOP (such as direct GOP rendering) is a noticeable slowdown
// However:
// - Windows without ACPI->Quirks->ResetLogoStatus does not clear any pre-existing graphics
// - Ref: https://github.com/acidanthera/bugtracker/issues/2231
// - Peforming this screen clear gives a sense of progress (i.e. something happens immediately
// rather than nothing) if the selected entry will be very slow to start (e.g. Recovery, in
/// some circumstances)
// //
#if 0
if (!mGuiContext.Refresh) { if (!mGuiContext.Refresh) {
// //
// Clear the screen only when we exit. // Clear the screen only when we exit.
...@@ -209,8 +216,6 @@ OcShowMenuByOc ( ...@@ -209,8 +216,6 @@ OcShowMenuByOc (
GuiClearScreen (&mDrawContext, &mGuiContext.BackgroundColor.Pixel); GuiClearScreen (&mDrawContext, &mGuiContext.BackgroundColor.Pixel);
} }
#endif
// //
// Note, it is important to destruct GUI here, as we must ensure // Note, it is important to destruct GUI here, as we must ensure
// that keyboard/mouse polling does not conflict with FV2 ui. // that keyboard/mouse polling does not conflict with FV2 ui.
...@@ -272,13 +277,15 @@ OcShowPasswordByOc ( ...@@ -272,13 +277,15 @@ OcShowPasswordByOc (
GuiDrawLoop (&mDrawContext); GuiDrawLoop (&mDrawContext);
// //
// Keep this clear screen, since it seems to match Mac firmware behaviour here better, // This screen clear is useful, even though the boot entry started will in general
// and it gives a better sense of progress between (intentionally slow - computationally // perform its own screen clear eventually anyway, since this gives a better sense
// intensive) password verification and (can be slow) start of Recovery. // of progress between (intentionally slow - computationally intensive) password
// // verification and (can be slow) start of Recovery.
// Clear the screen only if we will not show BootPicker afterwards.
// //
if (Context->PickerCommand != OcPickerShowPicker) { if (Context->PickerCommand != OcPickerShowPicker) {
//
// Clear the screen only if we will not show BootPicker afterwards.
//
GuiClearScreen (&mDrawContext, &mGuiContext.BackgroundColor.Pixel); GuiClearScreen (&mDrawContext, &mGuiContext.BackgroundColor.Pixel);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册