[PATCH] Only update the surface size if a new buffer is attached
Kristian Høgsberg
hoegsberg at gmail.com
Mon Jan 13 15:59:38 PST 2014
On Sat, Jan 11, 2014 at 12:12:19PM -0600, Jason Ekstrand wrote:
> This fixes a regression caused by either 918f2dd4 or da75ee1d. In
> particular, if a client called commit without attaching a buffer and if the
> compositor had already released its reference to the buffer, then a size of
> 0x0 would be set on the surface. In particular, this affects the wayland
> backend because it frequently sends only a frame request in order to cause
> a refresh.
>
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
Thanks, committed.
Kristian
> ---
> src/compositor.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/src/compositor.c b/src/compositor.c
> index bb1dfa9..8c69f3c 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -2110,10 +2110,10 @@ weston_surface_commit(struct weston_surface *surface)
> surface->buffer_viewport = surface->pending.buffer_viewport;
>
> /* wl_surface.attach */
> - if (surface->pending.buffer || surface->pending.newly_attached)
> + if (surface->pending.buffer || surface->pending.newly_attached) {
> weston_surface_attach(surface, surface->pending.buffer);
> -
> - weston_surface_set_size_from_buffer(surface);
> + weston_surface_set_size_from_buffer(surface);
> + }
>
> if (surface->configure && surface->pending.newly_attached)
> surface->configure(surface,
> @@ -2336,12 +2336,12 @@ weston_subsurface_commit_from_cache(struct weston_subsurface *sub)
> surface->buffer_viewport = sub->cached.buffer_viewport;
>
> /* wl_surface.attach */
> - if (sub->cached.buffer_ref.buffer || sub->cached.newly_attached)
> + if (sub->cached.buffer_ref.buffer || sub->cached.newly_attached) {
> weston_surface_attach(surface, sub->cached.buffer_ref.buffer);
> + weston_surface_set_size_from_buffer(surface);
> + }
> weston_buffer_reference(&sub->cached.buffer_ref, NULL);
>
> - weston_surface_set_size_from_buffer(surface);
> -
> if (surface->configure && sub->cached.newly_attached)
> surface->configure(surface, sub->cached.sx, sub->cached.sy);
> sub->cached.sx = 0;
> --
> 1.8.4.2
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list