summaryrefslogtreecommitdiff
path: root/sys/src/cmd/rio/rio.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-01-10 23:10:16 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2013-01-10 23:10:16 +0100
commitb4759c21867e844d3007160466e33bfc801671bb (patch)
treea048318fddfdcf3d0cc8b7789e4a9a693b02df2f /sys/src/cmd/rio/rio.c
parent681bcfa96897805c8b13c1ad29aa26841d839347 (diff)
still races, reverting... need a better approach.
Diffstat (limited to 'sys/src/cmd/rio/rio.c')
-rw-r--r--sys/src/cmd/rio/rio.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/sys/src/cmd/rio/rio.c b/sys/src/cmd/rio/rio.c
index 36aec2d64..8dbbf47be 100644
--- a/sys/src/cmd/rio/rio.c
+++ b/sys/src/cmd/rio/rio.c
@@ -205,7 +205,7 @@ threadmain(int argc, char *argv[])
exitchan = chancreate(sizeof(int), 0);
winclosechan = chancreate(sizeof(Window*), 0);
- deletechan = chancreate(sizeof(Wdelmesg), 0);
+ deletechan = chancreate(sizeof(char*), 0);
timerinit();
threadcreate(keyboardthread, nil, STACK);
@@ -422,28 +422,30 @@ winclosethread(void*)
void
deletethread(void*)
{
- Wdelmesg m;
+ char *s;
+ Image *i;
threadsetname("deletethread");
for(;;){
- recv(deletechan, &m);
- freeimage(m.i);
- m.i = namedimage(display, m.s);
- if(m.i != nil){
+ s = recvp(deletechan);
+ i = namedimage(display, s);
+ if(i != nil){
/* move it off-screen to hide it, since client is slow in letting it go */
- originwindow(m.i, m.i->r.min, view->r.max);
+ originwindow(i, i->r.min, view->r.max);
}
- freeimage(m.i);
- free(m.s);
+ freeimage(i);
+ free(s);
}
}
void
deletetimeoutproc(void *v)
{
+ char *s;
+
+ s = v;
sleep(750); /* remove window from screen after 3/4 of a second */
- send(deletechan, v);
- free(v);
+ sendp(deletechan, s);
}
/*