diff options
author | 2015-12-15 00:00:01 +0000 | |
---|---|---|
committer | 2015-12-15 00:00:01 +0000 | |
commit | 7519eda3a2d74d39e8eb8c0689e3da0f2bc3bae0 (patch) | |
tree | f8be89ec727706f58d3f1cbb3ef059c39acdf6d1 /usr.bin/tmux/server.c | |
parent | Use cmd_find_clear_state instead of an extra function doing the same. (diff) | |
download | wireguard-openbsd-7519eda3a2d74d39e8eb8c0689e3da0f2bc3bae0.tar.xz wireguard-openbsd-7519eda3a2d74d39e8eb8c0689e3da0f2bc3bae0.zip |
Make the marked pane a cmd_find_state.
Diffstat (limited to 'usr.bin/tmux/server.c')
-rw-r--r-- | usr.bin/tmux/server.c | 58 |
1 files changed, 16 insertions, 42 deletions
diff --git a/usr.bin/tmux/server.c b/usr.bin/tmux/server.c index 953c3621d1c..c140f39ad09 100644 --- a/usr.bin/tmux/server.c +++ b/usr.bin/tmux/server.c @@ -1,4 +1,4 @@ -/* $OpenBSD: server.c,v 1.154 2015/11/24 23:01:51 nicm Exp $ */ +/* $OpenBSD: server.c,v 1.155 2015/12/15 00:00:01 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -41,18 +41,14 @@ * Main server functions. */ -struct clients clients; +struct clients clients; -struct tmuxproc *server_proc; -int server_fd; -int server_exit; -struct event server_ev_accept; +struct tmuxproc *server_proc; +int server_fd; +int server_exit; +struct event server_ev_accept; -struct session *marked_session; -struct winlink *marked_winlink; -struct window *marked_window; -struct window_pane *marked_window_pane; -struct layout_cell *marked_layout_cell; +struct cmd_find_state marked_pane; int server_create_socket(void); int server_loop(void); @@ -68,22 +64,18 @@ void server_child_stopped(pid_t, int); void server_set_marked(struct session *s, struct winlink *wl, struct window_pane *wp) { - marked_session = s; - marked_winlink = wl; - marked_window = wl->window; - marked_window_pane = wp; - marked_layout_cell = wp->layout_cell; + cmd_find_clear_state(&marked_pane, NULL, 0); + marked_pane.s = s; + marked_pane.wl = wl; + marked_pane.w = wl->window; + marked_pane.wp = wp; } /* Clear marked pane. */ void server_clear_marked(void) { - marked_session = NULL; - marked_winlink = NULL; - marked_window = NULL; - marked_window_pane = NULL; - marked_layout_cell = NULL; + cmd_find_clear_state(&marked_pane, NULL, 0); } /* Is this the marked pane? */ @@ -92,9 +84,9 @@ server_is_marked(struct session *s, struct winlink *wl, struct window_pane *wp) { if (s == NULL || wl == NULL || wp == NULL) return (0); - if (marked_session != s || marked_winlink != wl) + if (marked_pane.s != s || marked_pane.wl != wl) return (0); - if (marked_window_pane != wp) + if (marked_pane.wp != wp) return (0); return (server_check_marked()); } @@ -103,25 +95,7 @@ server_is_marked(struct session *s, struct winlink *wl, struct window_pane *wp) int server_check_marked(void) { - struct winlink *wl; - - if (marked_window_pane == NULL) - return (0); - if (marked_layout_cell != marked_window_pane->layout_cell) - return (0); - - if (!session_alive(marked_session)) - return (0); - RB_FOREACH(wl, winlinks, &marked_session->windows) { - if (wl->window == marked_window && wl == marked_winlink) - break; - } - if (wl == NULL) - return (0); - - if (!window_has_pane(marked_window, marked_window_pane)) - return (0); - return (window_pane_visible(marked_window_pane)); + return (cmd_find_valid_state(&marked_pane)); } /* Create server socket. */ |