4cad96ed24
If no actors have changed their positions and we're only repainting because a window needs a repaint, the paint volumes of all actors remain unchanged. There is no reason to redo those paint volumes on every stage update. So introduce caching and invalidation logic for the visible_paint_volume that allows us to avoid a ton of matrix multiplications that right now are happening for the whole mapped actor tree on every redraw. Note that this removes two places where the visible paint volume is set to an empty paint volume: This is a compromise so that we can keep around the cached pv when hiding and showing an actor, it does "regress" one case though: When hiding -> moving -> showing an actor, we'll now include the old paint volume of the actor in the redraw clip on show (even though redrawing that old region is not necessary, the actor was hidden after all). This results in a bit of overpaint in this very specific case, but for the sake of simplicity let's not care about that. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2679> |
||
---|---|---|
.. | ||
clutter | ||
.gitignore | ||
meson.build |