https://bugs.kde.org/show_bug.cgi?id=526999

--- Comment #2 from Daniel <[email protected]> ---
(In reply to David Edmundson from comment #1)
> >When a wlr-layer-shell client changes its buffer size together with its 
> >anchors/margins/size in a single wl_surface.commit
> 
> It shouldn't.
> 
> Lets say I have a panel filling the bottom of the screen, then want it to
> fill the side of the screen.
> When I change the anchors, the panel has no idea how tall it should be. It
> can't choose a size.
> 
> If the panel were to move immediately to the new position, we would be
> drawing a horizontal bar in the wrong place.
>  
> The correct thing for clients:
>  - request change anchors
>  - commit (to group the anchor changes)
>  - wait for configure
>  - apply new buffer size
>  - apply new position
> 
> The spec is a bit weak and a bit unclear. It could do with an ack_configure,
> but your interpretation would create more problems.

Appreciate the reply, that makes sense.  After an anchor change the client
can't know its size until the configure, so applying everything in one commit
can't be right in general.

I did notice one thing though, in 6.7.5 when the rearrange sends that
configure, LayerShellV1Window::moveResizeInternal also moves the surface right
away, keeping its old size (src/layershellv1window.cpp:256, "The surface
position is updated synchronously"). So even with the order you describe, the
old buffer is shown at the new position until the client commits its resized
buffer, which is the "horizontal bar in the wrong place" case.

Should that move wait for the buffer that answers the configure, so size and
position are applied together? Or is the synchronous move intentional?

Not blocking anything on my side; I now keep the surface's size and position
fixed while it's visible.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to