mirror of
https://github.com/tmux/tmux.git
synced 2026-02-14 01:59:18 +00:00
Associate each visible_ranges with some other object (tty, popup_data, etc) so
it is easier to keep track of its lifecycle, but still avoid allocating for each use.
This commit is contained in:
48
tmux.h
48
tmux.h
@@ -956,7 +956,7 @@ struct screen_sel;
|
||||
struct screen_titles;
|
||||
struct screen {
|
||||
char *title;
|
||||
char *path;
|
||||
char *path;
|
||||
struct screen_titles *titles;
|
||||
|
||||
struct grid *grid; /* grid data */
|
||||
@@ -1532,6 +1532,19 @@ struct key_event {
|
||||
size_t len;
|
||||
};
|
||||
|
||||
/* Visible range array element. */
|
||||
struct visible_range {
|
||||
u_int px; /* start */
|
||||
u_int nx; /* length */
|
||||
};
|
||||
|
||||
/* Visible areas not obstructed. */
|
||||
struct visible_ranges {
|
||||
struct visible_range *ranges; /* dynamically allocated array */
|
||||
u_int used; /* number of entries in ranges */
|
||||
u_int size; /* allocated capacity of ranges */
|
||||
};
|
||||
|
||||
/* Terminal definition. */
|
||||
struct tty_term {
|
||||
char *name;
|
||||
@@ -1599,6 +1612,7 @@ struct tty {
|
||||
size_t discarded;
|
||||
|
||||
struct termios tio;
|
||||
struct visible_ranges r;
|
||||
|
||||
struct grid_cell cell;
|
||||
struct grid_cell last_cell;
|
||||
@@ -1915,28 +1929,15 @@ struct client_window {
|
||||
};
|
||||
RB_HEAD(client_windows, client_window);
|
||||
|
||||
/* Visible range array element. */
|
||||
struct visible_range {
|
||||
u_int px; /* Start */
|
||||
u_int nx; /* Length */
|
||||
};
|
||||
|
||||
/* Visible areas not obstructed. */
|
||||
struct visible_ranges {
|
||||
struct visible_range *ranges; /* dynamically allocated array */
|
||||
size_t used; /* number of entries in ranges */
|
||||
size_t size; /* allocated capacity of ranges */
|
||||
};
|
||||
|
||||
/* Client connection. */
|
||||
typedef int (*prompt_input_cb)(struct client *, void *, const char *, int);
|
||||
typedef void (*prompt_free_cb)(void *);
|
||||
typedef void (*overlay_check_cb)(struct client*, void *, u_int, u_int, u_int,
|
||||
struct visible_ranges *);
|
||||
typedef struct visible_ranges *(*overlay_check_cb)(struct client*, void *,
|
||||
u_int, u_int, u_int);
|
||||
typedef struct screen *(*overlay_mode_cb)(struct client *, void *, u_int *,
|
||||
u_int *);
|
||||
u_int *);
|
||||
typedef void (*overlay_draw_cb)(struct client *, void *,
|
||||
struct screen_redraw_ctx *);
|
||||
struct screen_redraw_ctx *);
|
||||
typedef int (*overlay_key_cb)(struct client *, void *, struct key_event *);
|
||||
typedef void (*overlay_free_cb)(struct client *, void *);
|
||||
typedef void (*overlay_resize_cb)(struct client *, void *);
|
||||
@@ -2559,8 +2560,8 @@ void tty_default_attributes(struct tty *, const struct grid_cell *,
|
||||
void tty_update_mode(struct tty *, int, struct screen *);
|
||||
const struct grid_cell *tty_check_codeset(struct tty *,
|
||||
const struct grid_cell *);
|
||||
void tty_check_overlay_range(struct tty *, u_int, u_int, u_int,
|
||||
struct visible_ranges *);
|
||||
struct visible_ranges *tty_check_overlay_range(struct tty *, u_int, u_int,
|
||||
u_int);
|
||||
|
||||
/* tty-draw.c */
|
||||
void tty_draw_line(struct tty *, struct screen *, u_int, u_int, u_int,
|
||||
@@ -2577,7 +2578,6 @@ void tty_close(struct tty *);
|
||||
void tty_free(struct tty *);
|
||||
void tty_update_features(struct tty *);
|
||||
void tty_set_selection(struct tty *, const char *, const char *, size_t);
|
||||
u_int tty_cell_width(const struct grid_cell *, u_int);
|
||||
void tty_write(void (*)(struct tty *, const struct tty_ctx *),
|
||||
struct tty_ctx *);
|
||||
void tty_cmd_alignmenttest(struct tty *, const struct tty_ctx *);
|
||||
@@ -2920,6 +2920,8 @@ void server_client_set_overlay(struct client *, u_int, overlay_check_cb,
|
||||
overlay_mode_cb, overlay_draw_cb, overlay_key_cb,
|
||||
overlay_free_cb, overlay_resize_cb, void *);
|
||||
void server_client_clear_overlay(struct client *);
|
||||
void server_client_ensure_ranges(struct visible_ranges *, u_int);
|
||||
int server_client_ranges_is_empty(struct visible_ranges *);
|
||||
void server_client_overlay_range(u_int, u_int, u_int, u_int, u_int, u_int,
|
||||
u_int, struct visible_ranges *);
|
||||
void server_client_set_key_table(struct client *, const char *);
|
||||
@@ -3623,8 +3625,8 @@ int menu_display(struct menu *, int, int, struct cmdq_item *,
|
||||
const char *, const char *, struct cmd_find_state *,
|
||||
menu_choice_cb, void *);
|
||||
struct screen *menu_mode_cb(struct client *, void *, u_int *, u_int *);
|
||||
void menu_check_cb(struct client *, void *, u_int, u_int, u_int,
|
||||
struct visible_ranges *);
|
||||
struct visible_ranges *menu_check_cb(struct client *, void *, u_int, u_int,
|
||||
u_int);
|
||||
void menu_draw_cb(struct client *, void *,
|
||||
struct screen_redraw_ctx *);
|
||||
void menu_free_cb(struct client *, void *);
|
||||
|
||||
Reference in New Issue
Block a user