From 81038fba866633c012f0475977498a77fe7f4329 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Sat, 11 Jan 2014 12:12:19 -0600 Subject: [PATCH] Only update the surface size if a new buffer is attached 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 --- src/compositor.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/compositor.c b/src/compositor.c index bb1dfa9c..8c69f3c3 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;