forked from github/abduco
Added two-stroke mechanism for detaching
This commit is contained in:
parent
3c5aafc0fb
commit
c80e8ff369
17
client.c
17
client.c
|
|
@ -63,6 +63,7 @@ static int client_mainloop(void) {
|
||||||
sigprocmask(SIG_BLOCK, &blockset, NULL);
|
sigprocmask(SIG_BLOCK, &blockset, NULL);
|
||||||
|
|
||||||
client.need_resize = true;
|
client.need_resize = true;
|
||||||
|
client.await_command = false;
|
||||||
Packet pkt = {
|
Packet pkt = {
|
||||||
.type = MSG_ATTACH,
|
.type = MSG_ATTACH,
|
||||||
.u.i = client.flags,
|
.u.i = client.flags,
|
||||||
|
|
@ -121,15 +122,21 @@ static int client_mainloop(void) {
|
||||||
die("client-stdin");
|
die("client-stdin");
|
||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
debug("client-stdin: %c\n", pkt.u.msg[0]);
|
debug("client-stdin: %c\n", pkt.u.msg[0]);
|
||||||
|
if (client.await_command) {
|
||||||
|
client.await_command = false;
|
||||||
|
if (pkt.u.msg[0]=='d') {
|
||||||
|
pkt.type = MSG_DETACH;
|
||||||
|
pkt.len = 0;
|
||||||
|
client_send_packet(&pkt);
|
||||||
|
close(server.socket);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
pkt.len = len;
|
pkt.len = len;
|
||||||
if (KEY_REDRAW && pkt.u.msg[0] == KEY_REDRAW) {
|
if (KEY_REDRAW && pkt.u.msg[0] == KEY_REDRAW) {
|
||||||
client.need_resize = true;
|
client.need_resize = true;
|
||||||
} else if (pkt.u.msg[0] == KEY_DETACH) {
|
} else if (pkt.u.msg[0] == KEY_DETACH) {
|
||||||
pkt.type = MSG_DETACH;
|
client.await_command = true;
|
||||||
pkt.len = 0;
|
|
||||||
client_send_packet(&pkt);
|
|
||||||
close(server.socket);
|
|
||||||
return -1;
|
|
||||||
} else if (!(client.flags & CLIENT_READONLY)) {
|
} else if (!(client.flags & CLIENT_READONLY)) {
|
||||||
client_send_packet(&pkt);
|
client_send_packet(&pkt);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue