From ad0cd5c036f0080ee8d97db2e67b8d54186d1e33 Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Mon, 6 May 2024 22:42:39 +0200 Subject: Fix slow buffer paste Was caused by updating all buffer hooks on every char insert. Particularily, the syntax update takes a little bit too long to call on every char. Now the keyboard parsing routine compresses all consecutive self-inserting chars into one "key press". Also fix some small issues with timers and update them with a min and max. --- src/main/cmds.c | 4 +++- src/main/main.c | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src/main') diff --git a/src/main/cmds.c b/src/main/cmds.c index 4dc84ed..04e42b4 100644 --- a/src/main/cmds.c +++ b/src/main/cmds.c @@ -189,7 +189,9 @@ void timer_to_list_line(const struct timer *timer, void *userdata) { const char *name = timer_name(timer); size_t namelen = strlen(name); size_t len = - snprintf(buf, 128, "%s - %.2f ms", name, (timer_average(timer) / 1e6)); + snprintf(buf, 128, "%s - %.2f ms (min: %.2f, max: %.2f)", name, + (timer_average(timer) / 1e6), timer_min(timer) / (float)1e6, + timer_max(timer) / (float)1e6); buffer_add(target, buffer_end(target), (uint8_t *)buf, len); } diff --git a/src/main/main.c b/src/main/main.c index 169716d..7dab26b 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -429,6 +429,7 @@ int main(int argc, char *argv[]) { } } } else if (k->mod == 0) { + // self-inserting chars buffer_view_add(window_buffer_view(active_window), &kbd_upd.raw[k->start], k->end - k->start); } else { @@ -453,6 +454,7 @@ int main(int argc, char *argv[]) { frame_time = timer_average(update_windows) + timer_average(update_keyboard) + timer_average(update_display); + timers_end_frame(); frame_allocator_clear(&frame_allocator); } -- cgit v1.2.3