aboutsummaryrefslogtreecommitdiff
path: root/server-job.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2009-11-04 20:50:11 +0000
committerNicholas Marriott <nicm@openbsd.org>2009-11-04 20:50:11 +0000
commitabf3a5d50ec4003f58f460cc9ab3c00671c920f8 (patch)
tree214252ffd3ea45a0998d965b5e2736e80100a9a9 /server-job.c
parentf575e39b0a367ae9b8a7cf54ceead865b8885eed (diff)
downloadrtmux-abf3a5d50ec4003f58f460cc9ab3c00671c920f8.tar.gz
rtmux-abf3a5d50ec4003f58f460cc9ab3c00671c920f8.tar.bz2
rtmux-abf3a5d50ec4003f58f460cc9ab3c00671c920f8.zip
Initial changes to move tmux to libevent.
This moves the client-side loops are pretty much fully over to event-based only (tmux.c and client.c) but server-side (server.c and friends) treats libevent as a sort of clever poll, waking up after every event to run various things. Moving the server stuff over to bufferevents and timers and so on will come later.
Diffstat (limited to 'server-job.c')
-rw-r--r--server-job.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/server-job.c b/server-job.c
index 6ff15860..5d83ff92 100644
--- a/server-job.c
+++ b/server-job.c
@@ -18,6 +18,7 @@
#include <sys/types.h>
+#include <event.h>
#include <unistd.h>
#include "tmux.h"
@@ -31,13 +32,16 @@ server_job_prepare(void)
SLIST_FOREACH(job, &all_jobs, lentry) {
if (job->fd == -1)
continue;
- server_poll_add(job->fd, POLLIN, server_job_callback, job);
+ event_del(&job->event);
+ event_set(
+ &job->event, job->fd, EV_READ, server_job_callback, job);
+ event_add(&job->event, NULL);
}
}
/* Process a single job event. */
void
-server_job_callback(int fd, int events, void *data)
+server_job_callback(int fd, short events, void *data)
{
struct job *job = data;
@@ -55,7 +59,7 @@ void
server_job_loop(void)
{
struct job *job;
-
+
restart:
SLIST_FOREACH(job, &all_jobs, lentry) {
if (job->flags & JOB_DONE || job->fd != -1 || job->pid != -1)