changeset 38935:b1bf1a386c78

(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.
author Gerd Moellmann <gerd@gnu.org>
date Fri, 24 Aug 2001 09:40:22 +0000
parents 4abf0b5b1fe3
children 92d48513e134
files lisp/gs.el
diffstat 1 files changed, 14 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gs.el	Fri Aug 24 08:42:35 2001 +0000
+++ b/lisp/gs.el	Fri Aug 24 09:40:22 2001 +0000
@@ -153,15 +153,21 @@
   (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)