Redraw is not scheduled when a desynchronized subsurface is mapped
@rawoul
Submitted by Arnaud Vrac Assigned to Arnaud Vrac @rawoul
Description
The spec is pretty clear on this point:
A sub-surface becomes mapped, when a non-NULL wl_buffer is applied
and the parent surface is mapped. The order of which one happens
first is irrelevant. A sub-surface is hidden if the parent becomes
hidden, or if a NULL wl_buffer is applied. These rules apply
recursively through the tree of surfaces.
From this paragraph, the expected behaviour when a subsurface is mapped (ie a buffer is attached on it for the first time) would be that it is displayed immediatly when its parent is mapped and the subsurface is in desynchronized mode.
Internally weston handles this correctly: the subsurface gets marked as mapped in subsurface_configure
. However no redraw is scheduled, since weston_view_update_transform
is not called in this case; so the subsurface is not shown until another event triggers a redraw in the compositor.