mirror of
https://github.com/tmux/tmux.git
synced 2025-11-06 11:46:06 +00:00
Alerts are too slow, so rather than walking all sessions and windows,
add a link of winlinks to each window and a pointer to the session to each winlink. Also rewrite the alerts processing to return to the old behaviour (alert in any window sets the flag on any winlink).
This commit is contained in:
8
tmux.h
8
tmux.h
@@ -889,12 +889,16 @@ struct window {
|
||||
#define WINDOW_STYLECHANGED 0x8000
|
||||
#define WINDOW_ALERTFLAGS (WINDOW_BELL|WINDOW_ACTIVITY|WINDOW_SILENCE)
|
||||
|
||||
int alerts_queued;
|
||||
TAILQ_ENTRY(window) alerts_entry;
|
||||
|
||||
struct options *options;
|
||||
|
||||
struct grid_cell style;
|
||||
struct grid_cell active_style;
|
||||
|
||||
u_int references;
|
||||
TAILQ_HEAD(, winlink) winlinks;
|
||||
|
||||
RB_ENTRY(window) entry;
|
||||
};
|
||||
@@ -903,6 +907,7 @@ RB_HEAD(windows, window);
|
||||
/* Entry on local window list. */
|
||||
struct winlink {
|
||||
int idx;
|
||||
struct session *session;
|
||||
struct window *window;
|
||||
|
||||
size_t status_width;
|
||||
@@ -916,6 +921,7 @@ struct winlink {
|
||||
#define WINLINK_ALERTFLAGS (WINLINK_BELL|WINLINK_ACTIVITY|WINLINK_SILENCE)
|
||||
|
||||
RB_ENTRY(winlink) entry;
|
||||
TAILQ_ENTRY(winlink) wentry;
|
||||
TAILQ_ENTRY(winlink) sentry;
|
||||
};
|
||||
RB_HEAD(winlinks, winlink);
|
||||
@@ -990,6 +996,7 @@ struct session {
|
||||
|
||||
#define SESSION_UNATTACHED 0x1 /* not attached to any clients */
|
||||
#define SESSION_PASTING 0x2
|
||||
#define SESSION_ALERTED 0x4
|
||||
int flags;
|
||||
|
||||
u_int attached;
|
||||
@@ -2069,7 +2076,6 @@ struct window *window_create(u_int, u_int);
|
||||
struct window *window_create_spawn(const char *, int, char **, const char *,
|
||||
const char *, const char *, struct environ *,
|
||||
struct termios *, u_int, u_int, u_int, char **);
|
||||
void window_destroy(struct window *);
|
||||
struct window_pane *window_get_active_at(struct window *, u_int, u_int);
|
||||
struct window_pane *window_find_string(struct window *, const char *);
|
||||
int window_has_pane(struct window *, struct window_pane *);
|
||||
|
||||
Reference in New Issue
Block a user