mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-20 05:33:47 -04:00
Merge branch 'master' into scroll-damage-performance
This commit is contained in:
commit
3a04061847
2 changed files with 23 additions and 31 deletions
41
render.c
41
render.c
|
|
@ -1606,30 +1606,25 @@ frame_callback(void *data, struct wl_callback *wl_callback, uint32_t callback_da
|
||||||
wl_callback_destroy(wl_callback);
|
wl_callback_destroy(wl_callback);
|
||||||
term->window->frame_callback = NULL;
|
term->window->frame_callback = NULL;
|
||||||
|
|
||||||
if (term->render.pending.csd) {
|
bool grid = term->render.pending.grid;
|
||||||
term->render.pending.csd = false;
|
bool csd = term->render.pending.csd;
|
||||||
|
bool search = term->render.pending.search;
|
||||||
|
|
||||||
if (term->window->use_csd == CSD_YES) {
|
term->render.pending.grid = false;
|
||||||
quirk_weston_csd_on(term);
|
term->render.pending.csd = false;
|
||||||
render_csd(term);
|
term->render.pending.search = false;
|
||||||
quirk_weston_csd_off(term);
|
|
||||||
}
|
if (csd && term->window->use_csd == CSD_YES) {
|
||||||
|
quirk_weston_csd_on(term);
|
||||||
|
render_csd(term);
|
||||||
|
quirk_weston_csd_off(term);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (term->render.pending.search) {
|
if (search && term->is_searching)
|
||||||
term->render.pending.search = false;
|
render_search_box(term);
|
||||||
|
|
||||||
if (term->is_searching)
|
if (grid && (!term->delayed_render_timer.is_armed || csd || search))
|
||||||
render_search_box(term);
|
grid_render(term);
|
||||||
}
|
|
||||||
|
|
||||||
if (term->render.pending.grid) {
|
|
||||||
term->render.pending.grid = false;
|
|
||||||
|
|
||||||
/* TODO: need to check if this breaks GNOME/weston */
|
|
||||||
if (!term->delayed_render_timer.is_armed)
|
|
||||||
grid_render(term);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Move to terminal.c? */
|
/* Move to terminal.c? */
|
||||||
|
|
@ -1974,9 +1969,9 @@ fdm_hook_refresh_pending_terminals(struct fdm *fdm, void *data)
|
||||||
grid_render(term);
|
grid_render(term);
|
||||||
} else {
|
} else {
|
||||||
/* Tells the frame callback to render again */
|
/* Tells the frame callback to render again */
|
||||||
term->render.pending.grid = grid;
|
term->render.pending.grid |= grid;
|
||||||
term->render.pending.csd = csd;
|
term->render.pending.csd |= csd;
|
||||||
term->render.pending.search = search;
|
term->render.pending.search |= search;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
13
terminal.c
13
terminal.c
|
|
@ -409,9 +409,6 @@ fdm_delayed_render(struct fdm *fdm, int fd, int events, void *data)
|
||||||
if (errno == EAGAIN)
|
if (errno == EAGAIN)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!term->delayed_render_timer.is_armed)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
LOG_ERRNO("failed to read timeout timer");
|
LOG_ERRNO("failed to read timeout timer");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -421,6 +418,9 @@ fdm_delayed_render(struct fdm *fdm, int fd, int events, void *data)
|
||||||
else if (ret2 > 0)
|
else if (ret2 > 0)
|
||||||
LOG_DBG("upper delay timer expired");
|
LOG_DBG("upper delay timer expired");
|
||||||
|
|
||||||
|
if (ret1 == 0 && ret2 == 0)
|
||||||
|
return true;
|
||||||
|
|
||||||
#if PTMX_TIMING
|
#if PTMX_TIMING
|
||||||
last = (struct timespec){0};
|
last = (struct timespec){0};
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -429,12 +429,9 @@ fdm_delayed_render(struct fdm *fdm, int fd, int events, void *data)
|
||||||
struct itimerspec reset = {{0}};
|
struct itimerspec reset = {{0}};
|
||||||
timerfd_settime(term->delayed_render_timer.lower_fd, 0, &reset, NULL);
|
timerfd_settime(term->delayed_render_timer.lower_fd, 0, &reset, NULL);
|
||||||
timerfd_settime(term->delayed_render_timer.upper_fd, 0, &reset, NULL);
|
timerfd_settime(term->delayed_render_timer.upper_fd, 0, &reset, NULL);
|
||||||
|
term->delayed_render_timer.is_armed = false;
|
||||||
|
|
||||||
if (term->delayed_render_timer.is_armed) {
|
render_refresh(term);
|
||||||
term->delayed_render_timer.is_armed = false;
|
|
||||||
render_refresh(term);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue