Change the visible_ranges array to work more like the overlay_ranges array, except be able to grow.

This commit is contained in:
Michael Grant
2025-10-26 14:18:27 +00:00
parent cc83ca6628
commit 984fbacccf
3 changed files with 63 additions and 65 deletions

14
tmux.h
View File

@@ -2235,9 +2235,11 @@ struct mode_tree_sort_criteria {
};
/* Visible range array element. nx==-1 is end of array mark. */
struct visible_range {
u_int px; /* Start */
int nx; /* Length */
struct visible_ranges {
u_int *px; /* Start */
u_int *nx; /* Length */
size_t used;
size_t size;
};
/* tmux.c */
@@ -2528,7 +2530,7 @@ void tty_set_path(struct tty *, const char *);
void tty_update_mode(struct tty *, int, struct screen *);
void tty_draw_line(struct tty *, struct screen *, u_int, u_int, u_int,
u_int, u_int, const struct grid_cell *, struct colour_palette *,
struct visible_range *);
struct visible_ranges *);
#ifdef ENABLE_SIXEL
void tty_draw_images(struct client *, struct window_pane *, struct screen *);
@@ -3171,8 +3173,8 @@ void screen_write_alternateoff(struct screen_write_ctx *,
/* screen-redraw.c */
void screen_redraw_screen(struct client *);
void screen_redraw_pane(struct client *, struct window_pane *, int);
int screen_redraw_is_visible(struct visible_range *, u_int px);
struct visible_range *screen_redraw_get_visible_ranges(struct window_pane *,
int screen_redraw_is_visible(struct visible_ranges *, u_int px);
struct visible_ranges *screen_redraw_get_visible_ranges(struct window_pane *,
u_int, u_int, u_int);