version 1.125, 2015/06/01 09:20:19 |
version 1.126, 2015/06/04 11:43:51 |
|
|
struct event server_ev_accept; |
struct event server_ev_accept; |
struct event server_ev_second; |
struct event server_ev_second; |
|
|
int server_create_socket(void); |
struct session *marked_session; |
void server_loop(void); |
struct winlink *marked_winlink; |
int server_should_shutdown(void); |
struct window *marked_window; |
void server_send_shutdown(void); |
struct window_pane *marked_window_pane; |
void server_clean_dead(void); |
struct layout_cell *marked_layout_cell; |
void server_accept_callback(int, short, void *); |
|
void server_signal_callback(int, short, void *); |
int server_create_socket(void); |
void server_child_signal(void); |
void server_loop(void); |
void server_child_exited(pid_t, int); |
int server_should_shutdown(void); |
void server_child_stopped(pid_t, int); |
void server_send_shutdown(void); |
void server_second_callback(int, short, void *); |
void server_clean_dead(void); |
void server_lock_server(void); |
void server_accept_callback(int, short, void *); |
void server_lock_sessions(void); |
void server_signal_callback(int, short, void *); |
|
void server_child_signal(void); |
|
void server_child_exited(pid_t, int); |
|
void server_child_stopped(pid_t, int); |
|
void server_second_callback(int, short, void *); |
|
void server_lock_server(void); |
|
void server_lock_sessions(void); |
|
|
|
/* Set marked pane. */ |
|
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; |
|
} |
|
|
|
/* 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; |
|
} |
|
|
|
/* Is this the marked pane? */ |
|
int |
|
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) |
|
return (0); |
|
if (marked_window_pane != wp) |
|
return (0); |
|
return (server_check_marked()); |
|
} |
|
|
|
/* Check if the marked pane is still valid. */ |
|
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)); |
|
} |
|
|
/* Create server socket. */ |
/* Create server socket. */ |
int |
int |