srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/crates/core/src/manager
diff options
context:
space:
mode:
authorsrdusr <[email protected]>2026-05-04 21:37:00 +0200
committersrdusr <[email protected]>2026-05-04 21:37:00 +0200
commit790ee906957b8b855dfc23cf1b206628585fd1ec (patch)
tree2351094dede798ed8b3fa32fd8fa41641752c64b /crates/core/src/manager
parent3ea84a31ee671b88d8c343b3007de0e975eff31c (diff)
downloadsrdwm-790ee906957b8b855dfc23cf1b206628585fd1ec.tar.gz
srdwm-790ee906957b8b855dfc23cf1b206628585fd1ec.zip
Support monitor split in the nested backend, correcting a wrong "blocked"
Earlier today I wrote that a nested compositor cannot produce a second monitor because split and fake monitors "need real head machinery that only the DRM backend has". That was inferred from both commands returning ok and changing nothing, not read from the code, and the first half is false. udev/platform.rs was simply the only backend draining those request queues. The winit poll never took them off, so the request sat there forever and the dispatch looked like it had worked. Nothing about split is DRM-bound: MonitorSplit is bookkeeping in WindowManager and split_rect is pure geometry in core. The winit poll now drains split requests the same way, and its monitors() expands a split into one Monitor per part with its own full_geometry and maximize_geometry, matching the udev expansion. Splitting the nested output into two 640x800 monitors with a seam now works, which is what a multi-monitor repro needs. Fake monitors stay udev-only; that half was not re-checked and is not claimed either way. Also corrected: the capture pass measured the shadow rect from w.geometry while both on-screen loops measure it from effective_frame, the client's real committed size. src indexes into a buffer rasterised at the frame's size, so the two disagreeing reads the wrong region whenever a client settles on a different size than it was asked for. The seam check this was meant to unblock is still not done. With the split working, the negative control failed: a floating window off the seam had no shadow either. Running both clients in one instance showed Alacritty renders a shadow in a capture and Nemo renders none, same settings, both floating, either focus. Nemo is server-side decorated and Alacritty is not, which is a lead and not a conclusion. Recorded in docs/TODO.md as open rather than guessed at. 515 tests pass, clippy clean.
Diffstat (limited to 'crates/core/src/manager')
0 files changed, 0 insertions, 0 deletions