diff options
| author | srdusr <[email protected]> | 2024-05-31 01:15:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2024-05-31 01:15:00 +0200 |
| commit | ae056d17d137463b70f34862b9e33a9813c4b381 (patch) | |
| tree | 0829297cf78a5b37f557a263049cf671f36ee0cf /legacy-cpp/scripts | |
| parent | 1c175642d073689ca11b9252411ea5f8446007d0 (diff) | |
| download | srdwm-ae056d17d137463b70f34862b9e33a9813c4b381.tar.gz srdwm-ae056d17d137463b70f34862b9e33a9813c4b381.zip | |
layer-shell: recompute the exclusive-zone reservation on unmap, not just on commit
ensure_layer_initial_configure (state.rs) already recomputes the usable
monitor rect when a layer surface's exclusive zone changes, but only from
the commit pre-hook - a surface that goes away without a final commit
(zwlr_layer_surface_v1's destroy path, layer_destroyed here) never ran that
check. unmap_layer's own zone change went unnoticed.
Found live by the AGS peer session: unmapping the bar for fullscreen logged
visible=false immediately, but `srd monitors` kept reporting the bar's old
reserved_top for as long as fullscreen lasted. Harmless there only because
toggle_fullscreen targets full_geometry, which ignores the reservation
outright - but wrong for anything that reads the reserved/usable rect while
a bar is unmapped without a clean exit (a crash, not just AGS's cooperative
fullscreen hide). Same zone_before/zone_after diff ensure_layer_initial_
configure already uses, run around unmap_layer instead of arrange().
Verified: cargo build --workspace, cargo clippy -p srdwm-wayland (0 new
warnings), cargo test -p srdwm-core (111/111).
Diffstat (limited to 'legacy-cpp/scripts')
0 files changed, 0 insertions, 0 deletions