You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.8 KiB
51 lines
1.8 KiB
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
|
From: Hans de Goede <hdegoede@redhat.com> |
|
Date: Fri, 28 Jan 2022 12:43:48 +0100 |
|
Subject: [PATCH] EFI: console: Do not set colorstate until the first text |
|
output |
|
|
|
GRUB_MOD_INIT(normal) does an unconditional: |
|
|
|
grub_env_set ("color_normal", "light-gray/black"); |
|
|
|
which triggers a grub_term_setcolorstate() call. The original version |
|
of the "efi/console: Do not set text-mode until we actually need it" patch: |
|
https://lists.gnu.org/archive/html/grub-devel/2018-03/msg00125.html |
|
|
|
Protected against this by caching the requested state in |
|
grub_console_setcolorstate () and then only applying it when the first |
|
text output actually happens. During refactoring to move the |
|
grub_console_setcolorstate () up higher in the grub-core/term/efi/console.c |
|
file the code to cache the color-state + bail early was accidentally |
|
dropped. |
|
|
|
Restore the cache the color-state + bail early behavior from the original. |
|
|
|
Cc: Javier Martinez Canillas <javierm@redhat.com> |
|
Fixes: 2d7c3abd871f ("efi/console: Do not set text-mode until we actually need it") |
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com> |
|
--- |
|
grub-core/term/efi/console.c | 10 ++++++++++ |
|
1 file changed, 10 insertions(+) |
|
|
|
diff --git a/grub-core/term/efi/console.c b/grub-core/term/efi/console.c |
|
index 2f1ae85ba7..c44b2ac318 100644 |
|
--- a/grub-core/term/efi/console.c |
|
+++ b/grub-core/term/efi/console.c |
|
@@ -82,6 +82,16 @@ grub_console_setcolorstate (struct grub_term_output *term |
|
{ |
|
grub_efi_simple_text_output_interface_t *o; |
|
|
|
+ if (grub_efi_is_finished || text_mode != GRUB_TEXT_MODE_AVAILABLE) |
|
+ { |
|
+ /* |
|
+ * Cache colorstate changes before the first text-output, this avoids |
|
+ * "color_normal" environment writes causing a switch to textmode. |
|
+ */ |
|
+ text_colorstate = state; |
|
+ return; |
|
+ } |
|
+ |
|
if (grub_efi_is_finished) |
|
return; |
|
|
|
|