From 8ad517944e46710ab832350c0dc3fc4e9239f7e2 Mon Sep 17 00:00:00 2001 From: rsc Date: Thu, 25 Mar 2004 23:03:57 +0000 Subject: Today's changes. More changes. --- src/cmd/acme/acme.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/cmd/acme/acme.c') diff --git a/src/cmd/acme/acme.c b/src/cmd/acme/acme.c index d4b4cad8..9636beab 100644 --- a/src/cmd/acme/acme.c +++ b/src/cmd/acme/acme.c @@ -161,7 +161,8 @@ threadmain(int argc, char *argv[]) cerr = chancreate(sizeof(char*), 0); cedit = chancreate(sizeof(int), 0); cexit = chancreate(sizeof(int), 0); - if(cwait==nil || ccommand==nil || ckill==nil || cxfidalloc==nil || cxfidfree==nil || cerr==nil || cexit==nil){ + cwarn = chancreate(sizeof(void*), 1); + if(cwait==nil || ccommand==nil || ckill==nil || cxfidalloc==nil || cxfidfree==nil || cerr==nil || cexit==nil || cwarn==nil){ fprint(2, "acme: can't create initial channels: %r\n"); exits("channels"); } @@ -251,7 +252,7 @@ readfile(Column *c, char *s) w = coladd(c, nil, nil, -1); cvttorunes(s, strlen(s), rb, &nb, &nr, nil); - rs = cleanrname((Runestr){rb, nr}); + rs = cleanrname(runestr(rb, nr)); winsetname(w, rs.r, rs.nr); textload(&w->body, 0, s, 1); w->body.file->mod = FALSE; @@ -403,7 +404,6 @@ keyboardthread(void *v) winlock(t->w, 'K'); wincommit(t->w, t); winunlock(t->w); - flushwarnings(1); flushimage(display, 1); } alts[KTimer].c = nil; @@ -430,7 +430,6 @@ keyboardthread(void *v) } if(nbrecv(keyboardctl->c, &r) > 0) goto casekeyboard; - flushwarnings(1); flushimage(display, 1); break; } @@ -447,7 +446,7 @@ mousethread(void *v) Plumbmsg *pm; Mouse m; char *act; - enum { MResize, MMouse, MPlumb, NMALT }; + enum { MResize, MMouse, MPlumb, MWarnings, NMALT }; static Alt alts[NMALT+1]; USED(v); @@ -461,11 +460,18 @@ mousethread(void *v) alts[MPlumb].c = cplumb; alts[MPlumb].v = ± alts[MPlumb].op = CHANRCV; + alts[MWarnings].c = cwarn; + alts[MWarnings].v = nil; + alts[MWarnings].op = CHANRCV; if(cplumb == nil) alts[MPlumb].op = CHANNOP; alts[NMALT].op = CHANEND; for(;;){ + qlock(&row.lk); + flushwarnings(); + qunlock(&row.lk); + flushimage(display, 1); switch(alt(alts)){ case MResize: if(getwindow(display, Refnone) < 0) @@ -473,8 +479,6 @@ mousethread(void *v) draw(screen, screen->r, display->white, nil, ZP); scrlresize(); rowresize(&row, screen->clipr); - flushwarnings(1); - flushimage(display, 1); break; case MPlumb: if(strcmp(pm->type, "text") == 0){ @@ -484,10 +488,10 @@ mousethread(void *v) else if(strcmp(act, "showdata")==0) plumbshow(pm); } - flushwarnings(1); - flushimage(display, 1); plumbfree(pm); break; + case MWarnings: + break; case MMouse: /* * Make a copy so decisions are consistent; mousectl changes @@ -570,8 +574,6 @@ mousethread(void *v) goto Continue; } Continue: - flushwarnings(0); - flushimage(display, 1); qunlock(&row.lk); break; } -- cgit v1.2.3