SerenityOS build: Sunday, May 29
Images 💾⌗
- serenity-i686-20220529-9e694c9.vdi.gz (VirtualBox VDI, 122.89 MiB)
- serenity-i686-20220529-9e694c9.img.gz (Raw image, 123.06 MiB)
Last commit ⭐⌗
commit 9e694c9d83c8f34d034ed16fbba3eb1a7676847f
Author: montiagne <montiagne@montiagne.mo>
AuthorDate: Sat May 28 20:14:44 2022 +0000
Commit: Linus Groh <mail@linusgroh.de>
CommitDate: Sun May 29 00:26:20 2022 +0100
WindowServer: Call screen_resolution_changed after window screens clear
When the user executes chres to change to a new resolution, the
WindowManager removes for each window its intersections with the
screens (window.screens()) and recalculates its rect. Finally, a
Window::set_rect call sets the window's new rectangle. The set_rect
call also triggers a call to Compositor::invalidate_occlusions which
fills for each window the intersections with the screens again in
window.screens().
In case chres switches to an already present resolution the set_rect
call exits prematurely as it checks if the window's rect really
changed. This means that nobody calls invalidate_occlusions
resulting in a rendering issue for each window.
Moving the call to Compositor::screen_resolution_changed after the
clearing of window.screens() and recalc of the window rect for each
window resolves the rendering issue as screen_resolution_changed
calls invalidate_occlusions.
Other builds