Subject: Re: bug#47895: 28.0.50; Emacs should only animate images that are visible

From: Eli Zaretskii <[email-masked]>
Date: Tue, 20 Apr 2021 16:51:02 +0300

> From: Lars Ingebrigtsen <[email-masked]>
> Cc: [email-masked]
> Date: Mon, 19 Apr 2021 22:49:55 +0200
> 
> (progn
>   (eww "https://lars.ingebrigtsen.no/wp-content/uploads/2018/03/candid.gif")
>   (bury-buffer))

The timer set up by image.el keeps "displaying" the animated GIF.

In this simple case, we could use

 (get-buffer-window (plist-get (cdr image) :animate-buffer) 'visible)

in image-animate-timeout to see if the buffer is displayed in any
window.  The harder questions are:

  . if the buffer is not displayed, what to do with the timer?
    continue running it? if so, how to interpret the LIMIT arg?

  . what if the window _is_ displayed, but the image is not visible?
    I think we'd need to record the image's buffer position in its
    plist, so that we could use pos-visible-in-window-p to find out
    whether the image is visible