Damage surface before attaching new buffer
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 21 Jun 2011 19:40:31 +0000 (15:40 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 21 Jun 2011 19:40:31 +0000 (15:40 -0400)
This reverts cde9bfc80545030a6e5e4579a1adc7263ab7bfe8.  We need to damage the
area covered by the old surface when attaching a new buffer.  The new surface
area will be damaged by the client.

compositor/compositor.c

index 781bb86..73affad 100644 (file)
@@ -908,6 +908,13 @@ surface_attach(struct wl_client *client,
 {
        struct wlsc_surface *es = (struct wlsc_surface *) surface;
 
+       /* FIXME: This damages the entire old surface, but we should
+        * really just damage the part that's no longer covered by the
+        * surface.  Anything covered by the new surface will be
+        * damaged by the client. */
+       if (es->buffer)
+               wlsc_surface_damage(es);
+
        buffer->busy_count++;
        wlsc_buffer_post_release(es->buffer);
 
@@ -927,12 +934,6 @@ surface_attach(struct wl_client *client,
 
        wlsc_buffer_attach(buffer, surface);
 
-       /* FIXME: This damages the entire old surface, but we should
-        * really just damage the part that's no longer covered by the
-        * surface.  Anything covered by the new surface will be
-        * damaged by the client. */
-       wlsc_surface_damage(es);
-
        es->compositor->shell->attach(es->compositor->shell, es);
 }