fix: fix Terminal app white flash
This commit is contained in:
@@ -381,6 +381,24 @@ extern "C" void _start() {
|
|||||||
if (!g_win.create("Terminal", INIT_W, INIT_H))
|
if (!g_win.create("Terminal", INIT_W, INIT_H))
|
||||||
montauk::exit(1);
|
montauk::exit(1);
|
||||||
|
|
||||||
|
// The kernel seeds newly created window surfaces with white so apps that
|
||||||
|
// haven't drawn their first frame don't show as transparent/black. For
|
||||||
|
// Terminal that produces a visible white flash while we run terminal_init
|
||||||
|
// and the first TrueType render. Paint the dark background and present
|
||||||
|
// immediately so the compositor sees terminal colors from frame one.
|
||||||
|
{
|
||||||
|
uint32_t bar_px = Color::from_hex(0x1C1C1C).to_pixel();
|
||||||
|
uint32_t bg_px = colors::TERM_BG.to_pixel();
|
||||||
|
int bar_pixels = TERM_TAB_BAR_H * g_win.width;
|
||||||
|
if (bar_pixels > g_win.width * g_win.height)
|
||||||
|
bar_pixels = g_win.width * g_win.height;
|
||||||
|
for (int i = 0; i < bar_pixels; i++)
|
||||||
|
g_win.pixels[i] = bar_px;
|
||||||
|
for (int i = bar_pixels; i < g_win.width * g_win.height; i++)
|
||||||
|
g_win.pixels[i] = bg_px;
|
||||||
|
g_win.present();
|
||||||
|
}
|
||||||
|
|
||||||
int term_h = g_win.height - TERM_TAB_BAR_H;
|
int term_h = g_win.height - TERM_TAB_BAR_H;
|
||||||
g_last_win_w = g_win.width;
|
g_last_win_w = g_win.width;
|
||||||
g_last_win_h = term_h;
|
g_last_win_h = term_h;
|
||||||
|
|||||||
Reference in New Issue
Block a user