]> git.lizzy.rs Git - plan9front.git/commitdiff
rio: exit rio when /dev/cons or /dev/kbd read loop terminates
authorcinap_lenrek <cinap_lenrek@felloff.net>
Sat, 27 Feb 2016 01:39:45 +0000 (02:39 +0100)
committercinap_lenrek <cinap_lenrek@felloff.net>
Sat, 27 Feb 2016 01:39:45 +0000 (02:39 +0100)
sys/src/cmd/rio/rio.c

index 29f5a024b630440e1e32334294bb85f0e6e850df..d8f7c78bf471f72822b13d57e734acb6b84cd9b9 100644 (file)
@@ -194,6 +194,11 @@ threadmain(int argc, char *argv[])
                exits("display open");
        }
        iconinit();
                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);
        view = screen;
        viewr = view->r;
        mousectl = initmouse(nil, screen);
@@ -209,10 +214,6 @@ threadmain(int argc, char *argv[])
        draw(view, viewr, background, nil, ZP);
        flushimage(display, 1);
 
        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);
        timerinit();
        threadcreate(keyboardthread, nil, STACK);
        threadcreate(mousethread, nil, STACK);
@@ -1316,7 +1317,6 @@ kbdproc(void *arg)
                /* read kbd state */
                while((n = read(kfd, buf, sizeof(buf))) > 0)
                        chanprint(c, "%.*s", n, buf);
                /* read kbd state */
                while((n = read(kfd, buf, sizeof(buf))) > 0)
                        chanprint(c, "%.*s", n, buf);
-               close(kfd);
        } else {
                /* read single characters */
                p = buf;
        } else {
                /* read single characters */
                p = buf;
@@ -1337,6 +1337,7 @@ kbdproc(void *arg)
                        p = buf + n;
                }
        }
                        p = buf + n;
                }
        }
+       send(exitchan, nil);
 }
 
 Channel*
 }
 
 Channel*