canonical / wlcs

Wayland Conformance Test Suite
GNU General Public License v2.0
50 stars 14 forks source link

XdgToplevelStable: Accept more protocol-compliant behaviour. #321

Closed RAOF closed 10 months ago

RAOF commented 11 months ago

We assumed that the compositor would send a second xdg_surface.configure after committing a buffer, as now that the surface is mapped we expect it to be in the activated state.

This second configure isn't guaranteed by the protocol, and there's no reason a compositor couldn't set the activated state in the first configure, prior to the window being mapped, on the basis that it'll almost certainly be made active once it has been mapped¹.

Instead of waiting for a second configure, wait for the surface to be in activated state. That catches both, equally protocol compliant, compositor behaviours.

Fixes: #318 (again!)

¹: This is possibly desirable behaviour - this way the client can immediately draw in the activated state, rather than rendering for an inactive window and then immediately needing to re-render for an active window.

bwidawsk commented 11 months ago

I've reworked my compositor to send a second configure with activated state after the buffer is attached. While this is not required per the spec, it is the only feasible way for me to set activated state (which apparently WLCS relies on). As such, this PR is no longer needed.