Subject: Re: bug#44120: 28.0.50; Animated GIFs sometimes leave "trails"

From: Eli Zaretskii <[email-masked]>
Date: Thu, 22 Oct 2020 15:54:29 +0300

> Date: Wed, 21 Oct 2020 21:08:42 +0100
> From: Alan Third <[email-masked]>
> Cc: [email-masked]
> 
> >From image.c:
> 
>       /* From gif89a spec: 1 = "keep in place", 2 = "restore
> 	 to background".  Treat any other value like 2.  */
> 
> >From the gif89a spec:
> 
> iv) Disposal Method - Indicates the way in which the graphic is to
>             be treated after being displayed.
> 
>             Values :    0 -   No disposal specified. The decoder is
>                               not required to take any action.
>                         1 -   Do not dispose. The graphic is to be left
>                               in place.
>                         2 -   Restore to background color. The area used by the
>                               graphic must be restored to the background color.
>                         3 -   Restore to previous. The decoder is required to
>                               restore the area overwritten by the graphic with
>                               what was there prior to rendering the graphic.
>                      4-7 -    To be defined.
> 
> That gif uses a disposal value of 3 quite a lot.
> 
> It looks like when a block is updated with a disposal value of 3 we
> should hang onto the previous contents and then restore them in, I
> guess, the next frame.

FTR, the image renders correctly on MS-Windows when
w32-use-native-image-API is non-nil, so this indeed seems like a
problem with our GIF code.