ref: 1f5b52f1c88ae8f62dd72026fe4ee027a740fb30
parent: dc10d1e829efe68034ebdfcd403c2547658e10a6
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri Feb 26 21:39:45 EST 2016
rio: exit rio when /dev/cons or /dev/kbd read loop terminates
--- a/sys/src/cmd/rio/rio.c
+++ b/sys/src/cmd/rio/rio.c
@@ -194,6 +194,11 @@
exits("display open");}
iconinit();
+
+ exitchan = chancreate(sizeof(int), 0);
+ winclosechan = chancreate(sizeof(Window*), 0);
+ deletechan = chancreate(sizeof(char*), 0);
+
view = screen;
viewr = view->r;
mousectl = initmouse(nil, screen);
@@ -209,10 +214,6 @@
draw(view, viewr, background, nil, ZP);
flushimage(display, 1);
- exitchan = chancreate(sizeof(int), 0);
- winclosechan = chancreate(sizeof(Window*), 0);
- deletechan = chancreate(sizeof(char*), 0);
-
timerinit();
threadcreate(keyboardthread, nil, STACK);
threadcreate(mousethread, nil, STACK);
@@ -1316,7 +1317,6 @@
/* read kbd state */
while((n = read(kfd, buf, sizeof(buf))) > 0)
chanprint(c, "%.*s", n, buf);
- close(kfd);
} else {/* read single characters */
p = buf;
@@ -1337,6 +1337,7 @@
p = buf + n;
}
}
+ send(exitchan, nil);
}
Channel*
--
⑨