Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam
2015-12-15 02:01:14 +00:00
7 changed files with 119 additions and 103 deletions

View File

@ -40,18 +40,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);
@ -67,22 +63,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? */
@ -91,9 +83,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());
}
@ -102,25 +94,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. */