https://bugs.winehq.org/show_bug.cgi?id=54271
--- Comment #7 from 399989567@qq.com --- In the wrong picture I submitted, there are two errors: 1. The first gif in the wrong picture is the misplaced wrong 2. The background of the 2nd and 3rd gif in the wrong picture flickers wildly in black (other gifs may be red, brown, yellow, etc.)
I still don't know the reason for the first question, but I already know the reason for the second question:
In the function get_gif_background_color we will get two colors: - PropertyTagIndexBackground - PropertyTagIndexTransparent
The color is expressed in 8-digit hexadecimal, the first 6 digits represent RGB, and the last digit represents transparency.
The reason for the problem is that all 8-digit hexadecimal values of the obtained PropertyTagIndexBackground and PropertyTagIndexTransparent are compared in the source code, and it is expected to return 0 when the two data are equal
// if(transparent_idx == bgcolor_idx) // { // return 0; // }
But there is a problem here. When RGB is 0 and the transparency is different, the function does not return here, but enters the subsequent logic (in the subsequent logic, the above-mentioned flashing red and black are calculated. , white, brown, etc.)
Therefore, you only need to add a judgment here. When the first six bits are equal and 0, return 0 directly here without judging the transparency.
The second problem can be solved by the method I said, but I still don't understand the reason for the first problem.
For the first question, I really need your help. If you don't know how to reproduce this problem, we can make an appointment for a suitable time, and I will help you reproduce the problem online (by zoom or other thing)