mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-31 07:11:09 -04:00
Merge branch 'master' into pixelated-curly
This commit is contained in:
commit
3ff4f57923
5 changed files with 16 additions and 8 deletions
|
|
@ -126,10 +126,13 @@
|
||||||
application (kitty keyboard protocol only) ([#2257][2257]).
|
application (kitty keyboard protocol only) ([#2257][2257]).
|
||||||
* Crash when application emits sixel RA with a height of 0, a width >
|
* Crash when application emits sixel RA with a height of 0, a width >
|
||||||
0, and then starts writing sixel data ([#2267][2267]).
|
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
|
[2232]: https://codeberg.org/dnkl/foot/issues/2232
|
||||||
[2257]: https://codeberg.org/dnkl/foot/issues/2257
|
[2257]: https://codeberg.org/dnkl/foot/issues/2257
|
||||||
[2267]: https://codeberg.org/dnkl/foot/issues/2267
|
[2267]: https://codeberg.org/dnkl/foot/issues/2267
|
||||||
|
[2263]: https://codeberg.org/dnkl/foot/issues/2263
|
||||||
|
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
|
||||||
8
osc.c
8
osc.c
|
|
@ -525,12 +525,14 @@ osc_uri(struct terminal *term, char *string)
|
||||||
id = sdbm_hash(value);
|
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);
|
term_osc8_close(term);
|
||||||
else
|
} else {
|
||||||
|
LOG_DBG("OSC-8: URL=%s, id=%" PRIu64, uri, id);
|
||||||
term_osc8_open(term, id, uri);
|
term_osc8_open(term, id, uri);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
10
render.c
10
render.c
|
|
@ -2305,8 +2305,8 @@ render_worker_thread(void *_ctx)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
wait_for_preapply_damage(struct terminal *term)
|
render_wait_for_preapply_damage(struct terminal *term)
|
||||||
{
|
{
|
||||||
if (!term->render.preapply_last_frame_damage)
|
if (!term->render.preapply_last_frame_damage)
|
||||||
return;
|
return;
|
||||||
|
|
@ -3342,7 +3342,7 @@ grid_render(struct terminal *term)
|
||||||
term->render.workers.preapplied_damage.buf != NULL))
|
term->render.workers.preapplied_damage.buf != NULL))
|
||||||
{
|
{
|
||||||
clock_gettime(CLOCK_MONOTONIC, &start_wait_preapply);
|
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);
|
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;
|
term->interactive_resizing.old_hide_cursor = false;
|
||||||
|
|
||||||
/* Invalidate render pointers */
|
/* Invalidate render pointers */
|
||||||
wait_for_preapply_damage(term);
|
render_wait_for_preapply_damage(term);
|
||||||
shm_unref(term->render.last_buf);
|
shm_unref(term->render.last_buf);
|
||||||
term->render.last_buf = NULL;
|
term->render.last_buf = NULL;
|
||||||
term->render.last_cursor.row = NULL;
|
term->render.last_cursor.row = NULL;
|
||||||
|
|
@ -4993,7 +4993,7 @@ damage_view:
|
||||||
tll_free(term->normal.scroll_damage);
|
tll_free(term->normal.scroll_damage);
|
||||||
tll_free(term->alt.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);
|
shm_unref(term->render.last_buf);
|
||||||
term->render.last_buf = NULL;
|
term->render.last_buf = NULL;
|
||||||
term_damage_view(term);
|
term_damage_view(term);
|
||||||
|
|
|
||||||
1
render.h
1
render.h
|
|
@ -49,3 +49,4 @@ struct csd_data {
|
||||||
struct csd_data get_csd_data(const struct terminal *term, enum csd_surface surf_idx);
|
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_buffer_release_callback(struct buffer *buf, void *data);
|
||||||
|
void render_wait_for_preapply_damage(struct terminal *term);
|
||||||
|
|
|
||||||
|
|
@ -2129,6 +2129,8 @@ wayl_win_destroy(struct wl_window *win)
|
||||||
|
|
||||||
struct terminal *term = win->term;
|
struct terminal *term = win->term;
|
||||||
|
|
||||||
|
render_wait_for_preapply_damage(term);
|
||||||
|
|
||||||
if (win->csd.move_timeout_fd != -1)
|
if (win->csd.move_timeout_fd != -1)
|
||||||
close(win->csd.move_timeout_fd);
|
close(win->csd.move_timeout_fd);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue