bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#34138: 27.0.50; Delayed display of PDF file images


From: martin rudalics
Subject: bug#34138: 27.0.50; Delayed display of PDF file images
Date: Sun, 20 Jan 2019 18:55:16 +0100

This

>   backtrace()
>   (let ((standard-output (get-buffer-create "*PDF test*"))) (backtrace))
>   (cond ((and image slice) (if pixels (cons (nth 3 slice) (nth 4 slice)) (cons (/ 
(float (nth 3 slice)) (frame-char-width frame)) (/ (float (nth 4 slice)) (frame-char-height 
frame))))) (image (image-size image pixels frame)) (t (let ((standard-output 
(get-buffer-create "*PDF test*"))) (backtrace))))
>   (let ((image (assoc 'image spec)) (slice (assoc 'slice spec))) (cond ((and image 
slice) (if pixels (cons (nth 3 slice) (nth 4 slice)) (cons (/ (float (nth 3 slice)) 
(frame-char-width frame)) (/ (float (nth 4 slice)) (frame-char-height frame))))) (image 
(image-size image pixels frame)) (t (let ((standard-output (get-buffer-create "*PDF 
test*"))) (backtrace)))))
>   (cond ((eq (car spec) 'xwidget) (let ((xwi (xwidget-info (xwidget-at (point-min))))) 
(cons (aref xwi 2) (aref xwi 3)))) ((eq (car spec) 'image) (image-size spec pixels frame)) 
(t (let ((image (assoc 'image spec)) (slice (assoc 'slice spec))) (cond ((and image slice) 
(if pixels (cons (nth 3 slice) (nth 4 slice)) (cons (/ (float (nth 3 slice)) 
(frame-char-width frame)) (/ (float (nth 4 slice)) (frame-char-height frame))))) (image 
(image-size image pixels frame)) (t (let ((standard-output (get-buffer-create "*PDF 
test*"))) (backtrace)))))))
>   image-display-size(nil t)
>   pdf-view-image-size(t)
>   pdf-misc-size-indication()
>   eval((pdf-misc-size-indication))
>   redisplay_internal\ \(C\ function\)()
>   backtrace()
>   (let ((standard-output (get-buffer-create "*PDF test*"))) (backtrace))
>   (cond ((and image slice) (if pixels (cons (nth 3 slice) (nth 4 slice)) (cons (/ 
(float (nth 3 slice)) (frame-char-width frame)) (/ (float (nth 4 slice)) (frame-char-height 
frame))))) (image (image-size image pixels frame)) (t (let ((standard-output 
(get-buffer-create "*PDF test*"))) (backtrace))))
>   (let ((image (assoc 'image spec)) (slice (assoc 'slice spec))) (cond ((and image 
slice) (if pixels (cons (nth 3 slice) (nth 4 slice)) (cons (/ (float (nth 3 slice)) 
(frame-char-width frame)) (/ (float (nth 4 slice)) (frame-char-height frame))))) (image 
(image-size image pixels frame)) (t (let ((standard-output (get-buffer-create "*PDF 
test*"))) (backtrace)))))
>   (cond ((eq (car spec) 'xwidget) (let ((xwi (xwidget-info (xwidget-at (point-min))))) 
(cons (aref xwi 2) (aref xwi 3)))) ((eq (car spec) 'image) (image-size spec pixels frame)) 
(t (let ((image (assoc 'image spec)) (slice (assoc 'slice spec))) (cond ((and image slice) 
(if pixels (cons (nth 3 slice) (nth 4 slice)) (cons (/ (float (nth 3 slice)) 
(frame-char-width frame)) (/ (float (nth 4 slice)) (frame-char-height frame))))) (image 
(image-size image pixels frame)) (t (let ((standard-output (get-buffer-create "*PDF 
test*"))) (backtrace)))))))
>   image-display-size(nil t)
>   pdf-view-image-size(t)
>   pdf-misc-size-indication()
>   eval((pdf-misc-size-indication))
>   posn-at-point(1 #<window 68 on fhs-2.3.pdf>)
>   window-in-direction(below #<window 68 on fhs-2.3.pdf>)

reveals that the mode line is evaluated twice in your scenario - once
to get a window in a direction (where we call 'posn-at-point' to tell
where on your frame point currently is) and once from redisplay.  I
don't know yet why 'image-get-display-property' apparently fails but
it looks like a good idea to me to wrap the 'image-display-size' call
in 'pdf-view-image-size' in 'ignore-errors' - evaluating a mode line
string should never throw an error (in paticular when it's only needed
to guess the height of the mode line).

martin





reply via email to

[Prev in Thread] Current Thread [Next in Thread]