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