summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/server-window.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2009-10-27 13:03:33 +0000
committernicm <nicm@openbsd.org>2009-10-27 13:03:33 +0000
commit27983bd300ebf0d9cf7fa67f901007fb7e120e3e (patch)
tree3858e6cf85e212ba7c7e2ffc9ee26de58989caa4 /usr.bin/tmux/server-window.c
parentencode the channels a converter will convert into the converter's (diff)
downloadwireguard-openbsd-27983bd300ebf0d9cf7fa67f901007fb7e120e3e.tar.xz
wireguard-openbsd-27983bd300ebf0d9cf7fa67f901007fb7e120e3e.zip
Move the poll registration functions into the server-*.c files.
Diffstat (limited to 'usr.bin/tmux/server-window.c')
-rw-r--r--usr.bin/tmux/server-window.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/usr.bin/tmux/server-window.c b/usr.bin/tmux/server-window.c
index d69c299577e..8184b0fb3ad 100644
--- a/usr.bin/tmux/server-window.c
+++ b/usr.bin/tmux/server-window.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server-window.c,v 1.1 2009/10/22 19:41:51 nicm Exp $ */
+/* $OpenBSD: server-window.c,v 1.2 2009/10/27 13:03:33 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -28,6 +28,39 @@ int server_window_check_content(
struct session *, struct window *, struct window_pane *);
void server_window_check_alive(struct window *);
+/* Register windows for poll. */
+void
+server_window_prepare(void)
+{
+ struct window *w;
+ struct window_pane *wp;
+ u_int i;
+ int events;
+
+ for (i = 0; i < ARRAY_LENGTH(&windows); i++) {
+ if ((w = ARRAY_ITEM(&windows, i)) == NULL)
+ continue;
+
+ TAILQ_FOREACH(wp, &w->panes, entry) {
+ if (wp->fd == -1)
+ continue;
+ events = POLLIN;
+ if (BUFFER_USED(wp->out) > 0)
+ events |= POLLOUT;
+ server_poll_add(
+ wp->fd, events, server_window_callback, wp);
+
+ if (wp->pipe_fd == -1)
+ continue;
+ events = 0;
+ if (BUFFER_USED(wp->pipe_buf) > 0)
+ events |= POLLOUT;
+ server_poll_add(
+ wp->pipe_fd, events, server_window_callback, wp);
+ }
+ }
+}
+
/* Process a single window pane event. */
void
server_window_callback(int fd, int events, void *data)