srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/legacy-cpp/cmake
diff options
context:
space:
mode:
authorsrdusr <[email protected]>2025-08-13 20:10:00 +0200
committersrdusr <[email protected]>2025-08-13 20:10:00 +0200
commit6694a2d9946d98d5752d84b22c45879cab5c9abe (patch)
tree49fcbeec0c06573400195eadfdc9bfb222d9c8fd /legacy-cpp/cmake
parent7f4740046a004a1ad06aefa5d1d6b1a351571b1a (diff)
downloadsrdwm-6694a2d9946d98d5752d84b22c45879cab5c9abe.tar.gz
srdwm-6694a2d9946d98d5752d84b22c45879cab5c9abe.zip
Fix terminal content disappearing on resize: don't cache a blank content mask
Reported live: "terminal output/everything disappears when i sometimes resize terminal." masked_content_buffer (the udev/Pixman rounded-corner content-masking path, live on this machine via general.rounded_corners) rendered a window's whole surface tree into an off-screen buffer and returned Some(bytes) unconditionally, with no check for whether that tree actually produced any drawable elements. content_epoch bumps on every commit, and a fast interactive resize is a rapid-fire sequence of commits - real odds that one races ahead of the client's own texture import, making the off-screen render legitimately come back empty. That blank result got returned as Some and cached under the new epoch the same as a correct one would, and rounded_content_buffer only rebuilds on the next epoch change - so the blank buffer stayed on screen, fully transparent, until the window's next real content change, indefinite for an idle terminal. masked_content_buffer now returns None when the element tree is empty, before doing the render+readback at all - the same "give up unmasked" pattern already used for a genuine renderer error. rounded_content_buffer drops rather than replaces its cache entry on None, so the render loop falls back to unmasked content for that one frame and retries the masked path on the next. Scoped to the udev/Pixman backend; winit masks via a GLES shader with no equivalent failure mode.
Diffstat (limited to 'legacy-cpp/cmake')
0 files changed, 0 insertions, 0 deletions