Unified · Split
| @@ -51,6 +51,7 @@ extern char · 50 unmodified lines | ||
| 51 | 51 | |
| 52 | 52 | void fsinit(Ninepserver*); |
| 53 | 53 | Window* qwindow(Qid*); |
| 54 | +void wsysrmfiles(Ninepserver*, Window*); | |
| 54 | 55 | |
| 55 | 56 | char *eve; |
| 56 | 57 | Ninepops ops; |
| @@ -87,6 +87,55 @@ wsysaddfiles(Ninepserver *s, Window *w) · 86 unmodified lines | ||
| 87 | 87 | return p; |
| 88 | 88 | } |
| 89 | 89 | |
| 90 | +static | |
| 91 | +void | |
| 92 | +drawrmfiles(Ninepserver *s, DClient *c) | |
| 93 | +{ | |
| 94 | + int i; | |
| 95 | + Path p; | |
| 96 | + | |
| 97 | + i = drawpath(c); | |
| 98 | + p = PATH(i, 0); | |
| 99 | + nineprmfile(s, p|Qctl); | |
| 100 | + nineprmfile(s, p|Qdata); | |
| 101 | + nineprmfile(s, p|Qcolormap); | |
| 102 | + nineprmfile(s, p|Qrefresh); | |
| 103 | + nineprmfile(s, p|Qwindow); | |
| 104 | + nineprmfile(s, p|Qdrawn); | |
| 105 | +} | |
| 106 | + | |
| 107 | +void | |
| 108 | +wsysrmfiles(Ninepserver *s, Window *w) | |
| 109 | +{ | |
| 110 | + int i; | |
| 111 | + DClient *c; | |
| 112 | + Path p; | |
| 113 | + | |
| 114 | + if(w == nil) | |
| 115 | + return; | |
| 116 | + p = PATH(w->id, 0); | |
| 117 | + nineprmfile(s, p|Qcons); | |
| 118 | + nineprmfile(s, p|Qconsctl); | |
| 119 | + nineprmfile(s, p|Qkeyboard); | |
| 120 | + nineprmfile(s, p|Qcursor); | |
| 121 | + nineprmfile(s, p|Qmouse); | |
| 122 | + nineprmfile(s, p|Qpointer); | |
| 123 | + nineprmfile(s, p|Qsnarf); | |
| 124 | + nineprmfile(s, p|Qlabel); | |
| 125 | + nineprmfile(s, p|Qwctl); | |
| 126 | + nineprmfile(s, p|Qwinid); | |
| 127 | + nineprmfile(s, p|Qwinname); | |
| 128 | + nineprmfile(s, p|Qwsys); | |
| 129 | + nineprmfile(s, p|Qnew); | |
| 130 | + nineprmfile(s, p|Qdraw); | |
| 131 | + for(i = 0; i < nclient; i++){ | |
| 132 | + c = client[i]; | |
| 133 | + if(drawwindow(c) == w) | |
| 134 | + drawrmfiles(s, c); | |
| 135 | + } | |
| 136 | + nineprmfile(s, p); | |
| 137 | +} | |
| 138 | + | |
| 90 | 139 | /* Service Functions */ |
| 91 | 140 | char* |
| 92 | 141 | wsysattach(Qid *qid, char *uname, char *aname) |
| @@ -44,26 +44,7 @@ updateref(void) · 43 unmodified lines | ||
| 44 | 44 | void |
| 45 | 45 | fsdelete(Window *w) |
| 46 | 46 | { |
| 47 | − Path p; | |
| 48 | − | |
| 49 | − if(w == nil) | |
| 50 | − return; | |
| 51 | − p = PATH(w->id, 0); | |
| 52 | − nineprmfile(server, p|Qcons); | |
| 53 | − nineprmfile(server, p|Qconsctl); | |
| 54 | − nineprmfile(server, p|Qkeyboard); | |
| 55 | − nineprmfile(server, p|Qcursor); | |
| 56 | − nineprmfile(server, p|Qmouse); | |
| 57 | − nineprmfile(server, p|Qpointer); | |
| 58 | − nineprmfile(server, p|Qsnarf); | |
| 59 | − nineprmfile(server, p|Qlabel); | |
| 60 | − nineprmfile(server, p|Qwctl); | |
| 61 | − nineprmfile(server, p|Qwinid); | |
| 62 | − nineprmfile(server, p|Qwinname); | |
| 63 | − nineprmfile(server, p|Qwsys); | |
| 64 | − nineprmfile(server, p|Qnew); | |
| 65 | − nineprmfile(server, p|Qdraw); | |
| 66 | − nineprmfile(server, p); | |
| 47 | + wsysrmfiles(server, w); | |
| 67 | 48 | } |
| 68 | 49 | |
| 69 | 50 | char* |
| @@ -52,6 +52,7 @@ deletewin(Window *w) · 51 unmodified lines | ||
| 52 | 52 | |
| 53 | 53 | if(w->pid > 0 && killreply(w)) |
| 54 | 54 | return; |
| 55 | + fsdelete(w); | |
| 55 | 56 | drawdettach(w); |
| 56 | 57 | xdeletewin(w); |
| 57 | 58 | w->deleted++; |
| @@ -65,7 +66,6 @@ deletewin(Window *w) · 7 unmodified lines | ||
| 65 | 66 | return; |
| 66 | 67 | --nwindow; |
| 67 | 68 | memmove(window+i, window+i+1, (nwindow-i)*sizeof(Window*)); |
| 68 | − fsdelete(w); | |
| 69 | 69 | } |
| 70 | 70 | |
| 71 | 71 | void |