fix: fix terminal event loop regression
This commit is contained in:
+15
-10
@@ -193,26 +193,31 @@ extern "C" void _start() {
|
||||
bool redraw = klog_poll();
|
||||
|
||||
Montauk::WinEvent ev;
|
||||
int r = g_win.poll(&ev);
|
||||
if (r < 0) break;
|
||||
bool quit = false;
|
||||
int r = 0;
|
||||
|
||||
if (r == 0) {
|
||||
if (redraw && klog_render())
|
||||
g_win.present();
|
||||
montauk::sleep_ms(16);
|
||||
continue;
|
||||
while ((r = g_win.poll(&ev)) > 0) {
|
||||
redraw = true;
|
||||
|
||||
if (ev.type == 3) {
|
||||
quit = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (ev.type == 3) break;
|
||||
|
||||
if (ev.type == 1) {
|
||||
klog_handle_mouse(ev);
|
||||
} else if (ev.type == 2 || ev.type == 4) {
|
||||
g_klog.term.dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (klog_render())
|
||||
if (r < 0 || quit) break;
|
||||
|
||||
if (redraw && klog_render())
|
||||
g_win.present();
|
||||
|
||||
if (r == 0)
|
||||
montauk::sleep_ms(16);
|
||||
}
|
||||
|
||||
klog_cleanup();
|
||||
|
||||
@@ -339,18 +339,17 @@ extern "C" void _start() {
|
||||
if (g_should_exit) break;
|
||||
|
||||
Montauk::WinEvent ev;
|
||||
int r = g_win.poll(&ev);
|
||||
if (r < 0) break;
|
||||
bool quit = false;
|
||||
int r = 0;
|
||||
|
||||
if (r == 0) {
|
||||
if (redraw && term_render())
|
||||
g_win.present();
|
||||
montauk::sleep_ms(16);
|
||||
continue;
|
||||
while ((r = g_win.poll(&ev)) > 0) {
|
||||
redraw = true;
|
||||
|
||||
if (ev.type == 3) {
|
||||
quit = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (ev.type == 3) break;
|
||||
|
||||
if (ev.type == 0) {
|
||||
term_handle_key(ev.key);
|
||||
} else if (ev.type == 1) {
|
||||
@@ -361,8 +360,19 @@ extern "C" void _start() {
|
||||
g_tabs.tabs[g_tabs.active_tab]->dirty = true;
|
||||
}
|
||||
|
||||
if (!g_should_exit && term_render())
|
||||
if (g_should_exit) {
|
||||
quit = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (r < 0 || quit) break;
|
||||
|
||||
if (redraw && term_render())
|
||||
g_win.present();
|
||||
|
||||
if (r == 0)
|
||||
montauk::sleep_ms(16);
|
||||
}
|
||||
|
||||
term_cleanup();
|
||||
|
||||
Reference in New Issue
Block a user