Reset pending surface delta x and y on commit
authorDaniel Stone <daniel@fooishbar.org>
Wed, 7 Nov 2012 06:51:44 +0000 (17:51 +1100)
committerKristian Høgsberg <krh@bitplanet.net>
Thu, 8 Nov 2012 16:32:29 +0000 (11:32 -0500)
The following sequence:
wl_surface::attach(s, b, 1, 2)
wl_surface::commit(s)
wl_surface::commit(s)
would actually result in the surface getting moved by (2,4) as the
pending attach delta wasn't reset on commit, only by another attach.

This only shows up on single-buffered surfaces.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
src/compositor.c

index d5b13c8..855203a 100644 (file)
@@ -1258,6 +1258,8 @@ surface_commit(struct wl_client *client, struct wl_resource *resource)
        if (surface->buffer && surface->configure)
                surface->configure(surface, surface->pending.sx,
                                   surface->pending.sy);
+       surface->pending.sx = 0;
+       surface->pending.sy = 0;
 
        /* wl_surface.damage */
        pixman_region32_init_rect(&opaque, 0, 0,