games/galaxy: fix exit race condition by pausing the galaxy before threadexitsall

This commit is contained in:
spew 2017-03-25 13:51:33 -05:00
parent 85b8d253d4
commit b2b80a3da5
2 changed files with 15 additions and 6 deletions

View file

@ -442,7 +442,7 @@ domenu(void)
G *= z;
break;
case EXIT:
threadexitsall(nil);
quit(nil);
break;
}
drawglxy();
@ -496,14 +496,14 @@ kbdthread(void*)
for(;;) {
recv(realkc->c, &r);
if(r == Kdel) {
threadexitsall(nil);
}
if(r == Kdel)
quit(nil);
if(kc.c != nil)
send(kc.c, &r);
else switch(r) {
case 'q':
threadexitsall(nil);
quit(nil);
break;
case 's':
stats ^= 1;
@ -538,10 +538,17 @@ tovector(Point p)
return v;
}
void
quit(char *e)
{
pause(0, 0);
threadexitsall(e);
}
void
usage(void)
{
fprint(2, "Usage: %s [-t throttle] [-G gravity] [-ε smooth] [-i] [file]\n", argv0);
fprint(2, "Usage: %s [-t throttle] [-G gravity] [-ε smooth] [-p extraproc] [-i] [file]\n", argv0);
threadexitsall("usage");
}

View file

@ -49,6 +49,8 @@ enum {
BODY,
};
void quit(char*);
Image *randcol(void);
Point topoint(Vector);
Vector tovector(Point);