mirror of
https://github.com/tmux/tmux.git
synced 2024-11-18 18:38:54 +00:00
Sync OpenBSD patchset 773:
Use an explicit event rather than event_once for the main event so it can be removed when the client becomes ready.
This commit is contained in:
parent
a7e5092bd4
commit
e7a4b68f73
13
tmux.c
13
tmux.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tmux.c,v 1.216 2010-10-09 14:29:32 tcunha Exp $ */
|
/* $Id: tmux.c,v 1.217 2010-10-24 00:31:57 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -60,6 +60,7 @@ char *makesockpath(const char *);
|
|||||||
__dead void shell_exec(const char *, const char *);
|
__dead void shell_exec(const char *, const char *);
|
||||||
|
|
||||||
struct imsgbuf *main_ibuf;
|
struct imsgbuf *main_ibuf;
|
||||||
|
struct event main_event;
|
||||||
|
|
||||||
void main_signal(int, short, unused void *);
|
void main_signal(int, short, unused void *);
|
||||||
void main_callback(int, short, void *);
|
void main_callback(int, short, void *);
|
||||||
@ -564,12 +565,14 @@ main(int argc, char **argv)
|
|||||||
events = EV_READ;
|
events = EV_READ;
|
||||||
if (main_ibuf->w.queued > 0)
|
if (main_ibuf->w.queued > 0)
|
||||||
events |= EV_WRITE;
|
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();
|
event_dispatch();
|
||||||
|
|
||||||
clear_signals(0);
|
event_del(&main_event);
|
||||||
|
|
||||||
|
clear_signals(0);
|
||||||
client_main(); /* doesn't return */
|
client_main(); /* doesn't return */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -602,10 +605,12 @@ main_callback(unused int fd, short events, void *data)
|
|||||||
fatalx("msgbuf_write failed");
|
fatalx("msgbuf_write failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event_del(&main_event);
|
||||||
events = EV_READ;
|
events = EV_READ;
|
||||||
if (main_ibuf->w.queued > 0)
|
if (main_ibuf->w.queued > 0)
|
||||||
events |= EV_WRITE;
|
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
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user