comparison lisp/server.el @ 83109:1707638677c9

Fix one more case of the previous error. lisp/server.el (server-delete-client): Added noframe parameter. (server-handle-delete-frame): Use it. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-149
author Karoly Lorentey <lorentey@elte.hu>
date Mon, 19 Apr 2004 14:21:37 +0000
parents c7a76f7d323c
children 7652900ea029
comparison
equal deleted inserted replaced
83108:c7a76f7d323c 83109:1707638677c9
205 New clients have no properties." 205 New clients have no properties."
206 (unless (server-client proc) 206 (unless (server-client proc)
207 (setq server-clients (cons (cons proc nil) 207 (setq server-clients (cons (cons proc nil)
208 server-clients)))) 208 server-clients))))
209 209
210 (defun server-delete-client (client) 210 (defun server-delete-client (client &optional noframe)
211 "Delete CLIENT, including its buffers, displays and frames." 211 "Delete CLIENT, including its buffers, displays and frames.
212 If NOFRAME is non-nil, let the frames live. (To be used from
213 `delete-frame-functions'."
212 ;; Force a new lookup of client (prevents infinite recursion). 214 ;; Force a new lookup of client (prevents infinite recursion).
213 (setq client (server-client 215 (setq client (server-client
214 (if (listp client) (car client) client))) 216 (if (listp client) (car client) client)))
215 (let ((proc (car client)) 217 (let ((proc (car client))
216 (buffers (server-client-get client 'buffers))) 218 (buffers (server-client-get client 'buffers)))
233 (let ((tty (server-client-get client 'tty))) 235 (let ((tty (server-client-get client 'tty)))
234 (when (and tty (server-tty-live-p tty)) 236 (when (and tty (server-tty-live-p tty))
235 (delete-tty tty))) 237 (delete-tty tty)))
236 238
237 ;; Delete the client's frames. 239 ;; Delete the client's frames.
238 (dolist (frame (frame-list)) 240 (unless noframe
239 (if (and (frame-live-p frame) 241 (dolist (frame (frame-list))
240 (equal (car client) (frame-parameter frame 'client))) 242 (if (and (frame-live-p frame)
241 (delete-frame frame))) 243 (equal (car client) (frame-parameter frame 'client)))
244 (delete-frame frame))))
242 245
243 ;; Delete the client's process. 246 ;; Delete the client's process.
244 (if (eq (process-status (car client)) 'open) 247 (if (eq (process-status (car client)) 'open)
245 (delete-process (car client))) 248 (delete-process (car client)))
246 249
283 (let ((proc (frame-parameter frame 'client))) 286 (let ((proc (frame-parameter frame 'client)))
284 (when (and proc (window-system frame)) 287 (when (and proc (window-system frame))
285 ;; (Closing a terminal frame must not trigger a delete; 288 ;; (Closing a terminal frame must not trigger a delete;
286 ;; we must wait for delete-tty-after-functions.) 289 ;; we must wait for delete-tty-after-functions.)
287 (server-log (format "server-handle-delete-frame, frame %s" frame) proc) 290 (server-log (format "server-handle-delete-frame, frame %s" frame) proc)
288 (server-delete-client proc)))) 291 (server-delete-client proc 'noframe)))) ; Let delete-frame delete the frame later.
289 292
290 (defun server-handle-suspend-tty (tty) 293 (defun server-handle-suspend-tty (tty)
291 "Notify the emacsclient process to suspend itself when its tty device is suspended." 294 "Notify the emacsclient process to suspend itself when its tty device is suspended."
292 (dolist (proc (server-clients-with 'tty tty)) 295 (dolist (proc (server-clients-with 'tty tty))
293 (server-log (format "server-handle-suspend-tty, tty %s" tty) proc) 296 (server-log (format "server-handle-suspend-tty, tty %s" tty) proc)