term: Misc fixes and improvements

This commit is contained in:
mintsuki 2022-10-04 08:21:59 +02:00
parent 1c06055e6d
commit 223ebc1932
4 changed files with 18 additions and 14 deletions

View File

@ -255,7 +255,7 @@ static void text_deinit(struct term_context *_ctx, void (*_free)(void *, size_t)
static struct textmode_context term_local_struct; static struct textmode_context term_local_struct;
void vga_textmode_init(bool managed) { void vga_textmode_init(bool managed) {
if (quiet || allocations_disallowed) { if (quiet) {
return; return;
} }

View File

@ -536,14 +536,12 @@ static bool last_serial = false;
static char *last_config = NULL; static char *last_config = NULL;
bool gterm_init(char *config, size_t width, size_t height) { bool gterm_init(char *config, size_t width, size_t height) {
if (quiet || allocations_disallowed) { if (quiet) {
return false; return false;
} }
if (current_video_mode >= 0 if (term != NULL
#if defined (BIOS) && term_backend == GTERM
&& current_video_mode != 0x03
#endif
&& fbinfo.default_res == true && fbinfo.default_res == true
&& width == 0 && width == 0
&& height == 0 && height == 0
@ -554,10 +552,8 @@ bool gterm_init(char *config, size_t width, size_t height) {
return true; return true;
} }
if (current_video_mode >= 0 if (term != NULL
#if defined (BIOS) && term_backend == GTERM
&& current_video_mode != 0x03
#endif
&& fbinfo.framebuffer_width == width && fbinfo.framebuffer_width == width
&& fbinfo.framebuffer_height == height && fbinfo.framebuffer_height == height
&& fbinfo.framebuffer_bpp == 32 && fbinfo.framebuffer_bpp == 32

View File

@ -564,7 +564,13 @@ static void menu_init_term(void) {
if (menu_resolution != NULL) if (menu_resolution != NULL)
parse_resolution(&req_width, &req_height, &req_bpp, menu_resolution); parse_resolution(&req_width, &req_height, &req_bpp, menu_resolution);
gterm_init(NULL, req_width, req_height); if (!gterm_init(NULL, req_width, req_height)) {
#if defined (BIOS)
vga_textmode_init(true);
#elif defined (UEFI)
panic(true, "menu: Failed to initialise terminal");
#endif
}
} else { } else {
#if defined (BIOS) #if defined (BIOS)
vga_textmode_init(true); vga_textmode_init(true);
@ -844,11 +850,13 @@ timeout_aborted:
} }
if (term_backend == FALLBACK) { if (term_backend == FALLBACK) {
gterm_init(NULL, 0, 0); gterm_init(NULL, 0, 0);
if (term == NULL) {
#if defined (BIOS) #if defined (BIOS)
if (term_backend == FALLBACK) {
vga_textmode_init(true); vga_textmode_init(true);
} #elif defined (UEFI)
panic(true, "menu: Failed to initialise terminal");
#endif #endif
}
} else { } else {
reset_term(); reset_term();
} }

View File

@ -689,7 +689,7 @@ FEAT_START
gterm_init(NULL, req_width, req_height); gterm_init(NULL, req_width, req_height);
} }
if (current_video_mode < 0) { if (term == NULL) {
panic(true, "limine: Failed to initialise terminal"); panic(true, "limine: Failed to initialise terminal");
} }