term: Misc fixes and improvements
This commit is contained in:
parent
1c06055e6d
commit
223ebc1932
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue