
On 15.10.22 12:15, Heinrich Schuchardt wrote:
Carve out function efi_clear_screen.
This does not motivate *why* you prefer to not use efi_cout_clear_screen anymore.
A side effect of this is that the screen will not longer be filled with a new background color, leading to lines that are written with that new background but only for the actual text length. Attached a screenshot to visualize this. Was that intended? Not saying it's necessarily critical.
Jan
PS: This is with proper console scrolling in place to avoid overwriting. Will send an update of my related patch soon.
Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com
lib/efi_loader/efi_console.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c index 3354b217a9..6d4784e140 100644 --- a/lib/efi_loader/efi_console.c +++ b/lib/efi_loader/efi_console.c @@ -460,6 +460,20 @@ static efi_status_t EFIAPI efi_cout_set_attribute( return EFI_EXIT(EFI_SUCCESS); }
+/**
- efi_cout_clear_screen() - clear screen
- */
+static void efi_clear_screen(void) +{
- /*
* The Linux console wants both a clear and a home command. The video
* uclass does not support <ESC>[H without coordinates, yet.
*/
- printf(ESC "[2J" ESC "[1;1H");
- efi_con_mode.cursor_column = 0;
- efi_con_mode.cursor_row = 0;
+}
/**
- efi_cout_clear_screen() - clear screen
@@ -475,13 +489,7 @@ static efi_status_t EFIAPI efi_cout_clear_screen( { EFI_ENTRY("%p", this);
- /*
* The Linux console wants both a clear and a home command. The video
* uclass does not support <ESC>[H without coordinates, yet.
*/
- printf(ESC "[2J" ESC "[1;1H");
- efi_con_mode.cursor_column = 0;
- efi_con_mode.cursor_row = 0;
efi_clear_screen();
return EFI_EXIT(EFI_SUCCESS);
} @@ -510,7 +518,7 @@ static efi_status_t EFIAPI efi_cout_set_mode( return EFI_EXIT(EFI_UNSUPPORTED);
efi_con_mode.mode = mode_number;
- EFI_CALL(efi_cout_clear_screen(this));
efi_clear_screen();
return EFI_EXIT(EFI_SUCCESS);
} @@ -536,7 +544,7 @@ static efi_status_t EFIAPI efi_cout_reset( efi_con_mode.attribute = 0x07; printf(ESC "[0;37;40m"); /* Clear screen */
- EFI_CALL(efi_cout_clear_screen(this));
efi_clear_screen();
return EFI_EXIT(EFI_SUCCESS);
}