88600c8985
Initially we generate the new part of fb_clip_region from the new part of redraw_clip, scale it up and clamp. But the clamping means the new part of fb_clip_region might now represent a slightly larger area than the new part of redraw_clip, by one pixel. In some rare cases where a foreground actor honours redraw_clip, but the background actor does not (meaning it might fill all fb_clip_region), you could find 1px rendering glitches in that gap as the background actor paints there but the foreground actor does not. To ensure such glitches can never happen we now regenerate the final redraw_clip as a clamped superset of the final fb_clip_region. That's the minimum area we must paint to ensure no gaps appear inside fb_clip_region. Although the fix here sounds like the intent of the old code, the old code forgot to include the new part of fb_clip_region in the clamping of the final redraw_clip. So the new part of redraw_clip was sometimes kept too small for the new part of fb_clip_region. We also move the code to the main path because technically it's also needed when `has_buffer_age == FALSE`. Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1500 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1554> |
||
---|---|---|
.. | ||
clutter | ||
.gitignore | ||
meson.build |