Drop the no_stop argument to tty_close and tty_free in favour of a flag in the

tty struct.
This commit is contained in:
Nicholas Marriott 2009-08-11 19:32:25 +00:00
parent f0635717b3
commit ff65e37545
4 changed files with 15 additions and 9 deletions

View File

@ -90,7 +90,7 @@ server_msg_dispatch(struct client *c)
fatalx("bad MSG_EXITING size"); fatalx("bad MSG_EXITING size");
c->session = NULL; c->session = NULL;
tty_close(&c->tty, c->flags & CLIENT_SUSPENDED); tty_close(&c->tty);
server_write_client(c, MSG_EXITED, NULL, 0); server_write_client(c, MSG_EXITED, NULL, 0);
break; break;
case MSG_UNLOCK: case MSG_UNLOCK:

View File

@ -902,7 +902,7 @@ server_lost_client(struct client *c)
ARRAY_SET(&clients, i, NULL); ARRAY_SET(&clients, i, NULL);
} }
tty_free(&c->tty, c->flags & CLIENT_SUSPENDED); tty_free(&c->tty);
screen_free(&c->status); screen_free(&c->status);

5
tmux.h
View File

@ -868,6 +868,7 @@ struct tty {
#define TTY_FREEZE 0x2 #define TTY_FREEZE 0x2
#define TTY_ESCAPE 0x4 #define TTY_ESCAPE 0x4
#define TTY_UTF8 0x8 #define TTY_UTF8 0x8
#define TTY_STARTED 0x10
int flags; int flags;
int term_flags; int term_flags;
@ -1164,8 +1165,8 @@ void tty_set_title(struct tty *, const char *);
void tty_update_mode(struct tty *, int); void tty_update_mode(struct tty *, int);
void tty_draw_line(struct tty *, struct screen *, u_int, u_int, u_int); void tty_draw_line(struct tty *, struct screen *, u_int, u_int, u_int);
int tty_open(struct tty *, const char *, char **); int tty_open(struct tty *, const char *, char **);
void tty_close(struct tty *, int); void tty_close(struct tty *);
void tty_free(struct tty *, int); void tty_free(struct tty *);
void tty_write(void (*)(struct tty *, struct tty_ctx *), struct tty_ctx *); void tty_write(void (*)(struct tty *, struct tty_ctx *), struct tty_ctx *);
void tty_cmd_alignmenttest(struct tty *, struct tty_ctx *); void tty_cmd_alignmenttest(struct tty *, struct tty_ctx *);
void tty_cmd_cell(struct tty *, struct tty_ctx *); void tty_cmd_cell(struct tty *, struct tty_ctx *);

15
tty.c
View File

@ -149,6 +149,8 @@ tty_start_tty(struct tty *tty)
tty->rupper = UINT_MAX; tty->rupper = UINT_MAX;
tty->mode = MODE_CURSOR; tty->mode = MODE_CURSOR;
tty->flags |= TTY_STARTED;
} }
void void
@ -156,6 +158,10 @@ tty_stop_tty(struct tty *tty)
{ {
struct winsize ws; struct winsize ws;
if (!(tty->flags & TTY_STARTED))
return;
tty->flags &= ~TTY_STARTED;
/* /*
* Be flexible about error handling and try not kill the server just * Be flexible about error handling and try not kill the server just
* because the fd is invalid. Things like ssh -t can easily leave us * because the fd is invalid. Things like ssh -t can easily leave us
@ -281,7 +287,7 @@ tty_get_acs(struct tty *tty, u_char ch)
} }
void void
tty_close(struct tty *tty, int no_stop) tty_close(struct tty *tty)
{ {
if (tty->fd == -1) if (tty->fd == -1)
return; return;
@ -291,8 +297,7 @@ tty_close(struct tty *tty, int no_stop)
tty->log_fd = -1; tty->log_fd = -1;
} }
if (!no_stop) tty_stop_tty(tty);
tty_stop_tty(tty);
tty_term_free(tty->term); tty_term_free(tty->term);
tty_keys_free(tty); tty_keys_free(tty);
@ -305,9 +310,9 @@ tty_close(struct tty *tty, int no_stop)
} }
void void
tty_free(struct tty *tty, int no_stop) tty_free(struct tty *tty)
{ {
tty_close(tty, no_stop); tty_close(tty);
if (tty->path != NULL) if (tty->path != NULL)
xfree(tty->path); xfree(tty->path);