Images 💾

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.