summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/server.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2015-12-15 00:00:01 +0000
committernicm <nicm@openbsd.org>2015-12-15 00:00:01 +0000
commit7519eda3a2d74d39e8eb8c0689e3da0f2bc3bae0 (patch)
treef8be89ec727706f58d3f1cbb3ef059c39acdf6d1 /usr.bin/tmux/server.c
parentUse cmd_find_clear_state instead of an extra function doing the same. (diff)
downloadwireguard-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.c58
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. */