https://bugs.kde.org/show_bug.cgi?id=522005
Vlad Zahorodnii <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Latest Commit|https://invent.kde.org/plas |https://invent.kde.org/plas |ma/kwin/-/commit/5fe17928a8 |ma/kwin/-/commit/2229d680c2 |d6ea21b0dada01862ca3cf65bac |7a45b4497ab6bc91a6709d18aff |fa3 |e26 --- Comment #22 from Vlad Zahorodnii <[email protected]> --- Git commit 2229d680c27a45b4497ab6bc91a6709d18affe26 by Vlad Zahorodnii. Committed on 30/06/2026 at 04:59. Pushed by vladz into branch 'Plasma/6.7'. Optimize querying X window shape The += operator effectively constructs a new region. If the number of rectangles in the X shape is huge, it can take a while to construct a RegionF. For example, the launcher in Guild Wars 2 video game, sets a region with more than 3000 rectangles. We can skip that heavy step by taking into account that the shape rectangles will be sorted in the y-x lexicographical order so we can pass the shape rects to Region/RegionF as is and later clip any rects that stick outside the buffer rect. In most cases, the intersected() step will be a noop. While on this, the moveResizeInternal() function doesn't need to fetch the shape region every time the window moves. The size check used to not exist because things were easier that way when kwin had still been a reparenting window manager. (cherry picked from commit 5fe17928a8d6ea21b0dada01862ca3cf65bacfa3) Co-authored-by: Vlad Zahorodnii <[email protected]> M +20 -13 src/x11window.cpp https://invent.kde.org/plasma/kwin/-/commit/2229d680c27a45b4497ab6bc91a6709d18affe26 -- You are receiving this mail because: You are watching all bug changes.
