Merge branch 'master' into pixelated-curly

This commit is contained in:
txf 2026-02-03 05:03:23 +01:00
commit 3ff4f57923
5 changed files with 16 additions and 8 deletions

View file

@ -126,10 +126,13 @@
application (kitty keyboard protocol only) ([#2257][2257]).
* Crash when application emits sixel RA with a height of 0, a width >
0, and then starts writing sixel data ([#2267][2267]).
* Crash if shutting down terminal instance while a "pre-apply damage"
thread is running ([#2263][2263]).
[2232]: https://codeberg.org/dnkl/foot/issues/2232
[2257]: https://codeberg.org/dnkl/foot/issues/2257
[2267]: https://codeberg.org/dnkl/foot/issues/2267
[2263]: https://codeberg.org/dnkl/foot/issues/2263
### Security

8
osc.c
View file

@ -525,12 +525,14 @@ osc_uri(struct terminal *term, char *string)
id = sdbm_hash(value);
}
LOG_DBG("OSC-8: URL=%s, id=%" PRIu64, uri, id);
if (uri[0] == '\0')
if (uri[0] == '\0') {
LOG_DBG("OSC-8: close");
term_osc8_close(term);
else
} else {
LOG_DBG("OSC-8: URL=%s, id=%" PRIu64, uri, id);
term_osc8_open(term, id, uri);
}
}
static void

View file

@ -2305,8 +2305,8 @@ render_worker_thread(void *_ctx)
return -1;
}
static void
wait_for_preapply_damage(struct terminal *term)
void
render_wait_for_preapply_damage(struct terminal *term)
{
if (!term->render.preapply_last_frame_damage)
return;
@ -3342,7 +3342,7 @@ grid_render(struct terminal *term)
term->render.workers.preapplied_damage.buf != NULL))
{
clock_gettime(CLOCK_MONOTONIC, &start_wait_preapply);
wait_for_preapply_damage(term);
render_wait_for_preapply_damage(term);
clock_gettime(CLOCK_MONOTONIC, &stop_wait_preapply);
}
@ -4418,7 +4418,7 @@ delayed_reflow_of_normal_grid(struct terminal *term)
term->interactive_resizing.old_hide_cursor = false;
/* Invalidate render pointers */
wait_for_preapply_damage(term);
render_wait_for_preapply_damage(term);
shm_unref(term->render.last_buf);
term->render.last_buf = NULL;
term->render.last_cursor.row = NULL;
@ -4993,7 +4993,7 @@ damage_view:
tll_free(term->normal.scroll_damage);
tll_free(term->alt.scroll_damage);
wait_for_preapply_damage(term);
render_wait_for_preapply_damage(term);
shm_unref(term->render.last_buf);
term->render.last_buf = NULL;
term_damage_view(term);

View file

@ -49,3 +49,4 @@ struct csd_data {
struct csd_data get_csd_data(const struct terminal *term, enum csd_surface surf_idx);
void render_buffer_release_callback(struct buffer *buf, void *data);
void render_wait_for_preapply_damage(struct terminal *term);

View file

@ -2129,6 +2129,8 @@ wayl_win_destroy(struct wl_window *win)
struct terminal *term = win->term;
render_wait_for_preapply_damage(term);
if (win->csd.move_timeout_fd != -1)
close(win->csd.move_timeout_fd);