mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-08 22:28:24 +02:00
Re-request render frames if we dont hear back in a quarter of a second
Fixes #1748 (I hope)
This commit is contained in:
@@ -675,6 +675,11 @@ draw_resizing_text(OSWindow *w) {
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool
|
||||
no_render_frame_received_recently(OSWindow *w, double now) {
|
||||
return now - w->last_render_frame_received_at > 0.25;
|
||||
}
|
||||
|
||||
static inline void
|
||||
render(double now) {
|
||||
double time_since_last_render = now - last_render_at;
|
||||
@@ -691,7 +696,7 @@ render(double now) {
|
||||
continue;
|
||||
}
|
||||
if (USE_RENDER_FRAMES && w->render_state != RENDER_FRAME_READY) {
|
||||
if (w->render_state == RENDER_FRAME_NOT_REQUESTED) request_frame_render(w);
|
||||
if (w->render_state == RENDER_FRAME_NOT_REQUESTED || no_render_frame_received_recently(w, now)) request_frame_render(w);
|
||||
continue;
|
||||
}
|
||||
make_os_window_context_current(w);
|
||||
|
||||
@@ -1052,6 +1052,7 @@ cocoa_frame_request_callback(GLFWwindow *window) {
|
||||
for (size_t i = 0; i < global_state.num_os_windows; i++) {
|
||||
if (global_state.os_windows[i].handle == window) {
|
||||
global_state.os_windows[i].render_state = RENDER_FRAME_READY;
|
||||
global_state.os_windows[i].last_render_frame_received_at = monotonic();
|
||||
request_tick_callback();
|
||||
break;
|
||||
}
|
||||
@@ -1071,6 +1072,7 @@ wayland_frame_request_callback(id_type os_window_id) {
|
||||
for (size_t i = 0; i < global_state.num_os_windows; i++) {
|
||||
if (global_state.os_windows[i].id == os_window_id) {
|
||||
global_state.os_windows[i].render_state = RENDER_FRAME_READY;
|
||||
global_state.os_windows[i].last_render_frame_received_at = monotonic();
|
||||
request_tick_callback();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -148,6 +148,7 @@ typedef struct {
|
||||
id_type temp_font_group_id;
|
||||
double pending_scroll_pixels;
|
||||
enum RENDER_STATE render_state;
|
||||
double last_render_frame_received_at;
|
||||
id_type last_focused_counter;
|
||||
ssize_t gvao_idx;
|
||||
} OSWindow;
|
||||
|
||||
Reference in New Issue
Block a user