1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-27 07:37:33 +00:00

(gs-load-image): Wait for GHOSTVIEW window property

being reset by Ghostscript.  Don't kill the gs process.
From David.Kastrup@neuroinformatik.ruhr-uni-bochum.de.
This commit is contained in:
Gerd Moellmann 2001-08-24 09:40:22 +00:00
parent 3ec6401d7b
commit a59aecc534

View File

@ -153,15 +153,21 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful."
(unwind-protect
(let ((file (plist-get (cdr spec) :file))
gs
(waiting 0))
;; If another ghostscript is running, wait for it to complete.
;; Two ghostscript processes running at the same time would
;; use the same window properties, and get confused.
(while (and (process-status "gs") (< waiting 10))
(timeout 10))
;; Wait while property gets freed from a previous ghostscript
;; process
(while (and (not (zerop (length (x-window-property "GHOSTVIEW"
frame))))
(not (zerop timeout)))
(sit-for 0 100 t)
(setq waiting (1+ waiting)))
(when (process-status "gs")
(kill-process "gs"))
(setq timeout (1- timeout)))
;; No use waiting longer. We might want to try killing off
;; stuck processes, but there is no point in doing so: either
;; they are stuck for good, in which case the user would
;; probably be responsible for that, and killing them off will
;; make debugging harder, or they are not. In that case, they
;; will cause incomplete displays. But the same will happen
;; if they are killed, anyway.
(gs-set-ghostview-window-prop frame spec img-width img-height)
(gs-set-ghostview-colors-window-prop frame pixel-colors)
(setenv "GHOSTVIEW" window-and-pixmap-id)