From 65ff5b00bd786ca02ebfde9f76d0730acb9f68b4 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Thu, 14 Oct 2010 17:38:39 +0000 Subject: [PATCH] Use an explicit event rather than event_once for the main event so it can be removed when the client becomes ready. --- tmux.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tmux.c b/tmux.c index 2b01f2b7..842fd1b9 100644 --- a/tmux.c +++ b/tmux.c @@ -61,6 +61,7 @@ char *makesockpath(const char *); __dead void shell_exec(const char *, const char *); struct imsgbuf *main_ibuf; +struct event main_event; void main_signal(int, short, unused void *); void main_callback(int, short, void *); @@ -547,12 +548,14 @@ main(int argc, char **argv) events = EV_READ; if (main_ibuf->w.queued > 0) events |= EV_WRITE; - event_once(main_ibuf->fd, events, main_callback, shellcmd, NULL); + event_set(&main_event, main_ibuf->fd, events, main_callback, shellcmd); + event_add(&main_event, NULL); event_dispatch(); - clear_signals(0); + event_del(&main_event); + clear_signals(0); client_main(); /* doesn't return */ } @@ -585,10 +588,12 @@ main_callback(unused int fd, short events, void *data) fatalx("msgbuf_write failed"); } + event_del(&main_event); events = EV_READ; if (main_ibuf->w.queued > 0) events |= EV_WRITE; - event_once(main_ibuf->fd, events, main_callback, shellcmd, NULL); + event_set(&main_event, main_ibuf->fd, events, main_callback, shellcmd); + event_add(&main_event, NULL); } void