Unified · Split
| @@ -51,6 +51,7 @@ extern char · 50 unmodified lines | |||
| 51 | 51 | ||
| 52 | void fsinit(Ninepserver*); | 52 | void fsinit(Ninepserver*); |
| 53 | Window* qwindow(Qid*); | 53 | Window* qwindow(Qid*); |
| 54 | void wsysrmfiles(Ninepserver*, Window*); | ||
| 54 | 55 | ||
| 55 | char *eve; | 56 | char *eve; |
| 56 | Ninepops ops; | 57 | Ninepops ops; |
| @@ -87,6 +87,55 @@ wsysaddfiles(Ninepserver *s, Window *w) · 86 unmodified lines | |||
| 87 | return p; | 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 | /* Service Functions */ | 139 | /* Service Functions */ |
| 91 | char* | 140 | char* |
| 92 | wsysattach(Qid *qid, char *uname, char *aname) | 141 | wsysattach(Qid *qid, char *uname, char *aname) |
| @@ -44,26 +44,7 @@ updateref(void) · 43 unmodified lines | |||
| 44 | void | 44 | void |
| 45 | fsdelete(Window *w) | 45 | fsdelete(Window *w) |
| 46 | { | 46 | { |
| 47 | Path p; | 47 | wsysrmfiles(server, w); |
| 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); | ||
| 67 | } | 48 | } |
| 68 | 49 | ||
| 69 | char* | 50 | char* |
| @@ -52,6 +52,7 @@ deletewin(Window *w) · 51 unmodified lines | |||
| 52 | 52 | ||
| 53 | if(w->pid > 0 && killreply(w)) | 53 | if(w->pid > 0 && killreply(w)) |
| 54 | return; | 54 | return; |
| 55 | fsdelete(w); | ||
| 55 | drawdettach(w); | 56 | drawdettach(w); |
| 56 | xdeletewin(w); | 57 | xdeletewin(w); |
| 57 | w->deleted++; | 58 | w->deleted++; |
| @@ -65,7 +66,6 @@ deletewin(Window *w) · 7 unmodified lines | |||
| 65 | return; | 66 | return; |
| 66 | --nwindow; | 67 | --nwindow; |
| 67 | memmove(window+i, window+i+1, (nwindow-i)*sizeof(Window*)); | 68 | memmove(window+i, window+i+1, (nwindow-i)*sizeof(Window*)); |
| 68 | fsdelete(w); | ||
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | void | 71 | void |