compositor: move texture_damage into renderer private
authorPekka Paalanen <ppaalanen@gmail.com>
Tue, 4 Dec 2012 13:58:16 +0000 (15:58 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Thu, 6 Dec 2012 21:56:04 +0000 (16:56 -0500)
Only the gl_renderer uses this field.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
src/compositor.c
src/compositor.h
src/gl-renderer.c

index 6e58776..f56e515 100644 (file)
@@ -228,8 +228,6 @@ weston_surface_create(struct weston_compositor *compositor)
                return NULL;
        }
 
-       pixman_region32_init(&surface->texture_damage);
-
        surface->buffer_transform = WL_OUTPUT_TRANSFORM_NORMAL;
        surface->pending.buffer_transform = surface->buffer_transform;
        surface->output = NULL;
@@ -864,7 +862,6 @@ destroy_surface(struct wl_resource *resource)
 
        weston_buffer_reference(&surface->buffer_ref, NULL);
 
-       pixman_region32_fini(&surface->texture_damage);
        compositor->renderer->destroy_surface(surface);
 
        pixman_region32_fini(&surface->transform.boundingbox);
index 1aefe0a..6aa411d 100644 (file)
@@ -383,7 +383,6 @@ struct weston_region {
 struct weston_surface {
        struct wl_surface surface;
        struct weston_compositor *compositor;
-       pixman_region32_t texture_damage;
        pixman_region32_t clip;
        pixman_region32_t damage;
        pixman_region32_t opaque;
index 89e9a4d..8da111e 100644 (file)
@@ -58,6 +58,7 @@ struct gl_surface_state {
 
        GLuint textures[3];
        int num_textures;
+       pixman_region32_t texture_damage;
 
        EGLImageKHR images[3];
        GLenum target;
@@ -1050,8 +1051,8 @@ gl_renderer_flush_damage(struct weston_surface *surface)
        int i, n;
 #endif
 
-       pixman_region32_union(&surface->texture_damage,
-                             &surface->texture_damage, &surface->damage);
+       pixman_region32_union(&gs->texture_damage,
+                             &gs->texture_damage, &surface->damage);
 
        if (!buffer)
                return;
@@ -1064,7 +1065,7 @@ gl_renderer_flush_damage(struct weston_surface *surface)
        if (surface->plane != &surface->compositor->primary_plane)
                return;
 
-       if (!pixman_region32_not_empty(&surface->texture_damage))
+       if (!pixman_region32_not_empty(&gs->texture_damage))
                goto done;
 
        glBindTexture(GL_TEXTURE_2D, gs->textures[0]);
@@ -1082,7 +1083,7 @@ gl_renderer_flush_damage(struct weston_surface *surface)
        /* Mesa does not define GL_EXT_unpack_subimage */
        glPixelStorei(GL_UNPACK_ROW_LENGTH, gs->pitch);
        data = wl_shm_buffer_get_data(buffer);
-       rectangles = pixman_region32_rectangles(&surface->texture_damage, &n);
+       rectangles = pixman_region32_rectangles(&gs->texture_damage, &n);
        for (i = 0; i < n; i++) {
                pixman_box32_t r;
 
@@ -1097,8 +1098,8 @@ gl_renderer_flush_damage(struct weston_surface *surface)
 #endif
 
 done:
-       pixman_region32_fini(&surface->texture_damage);
-       pixman_region32_init(&surface->texture_damage);
+       pixman_region32_fini(&gs->texture_damage);
+       pixman_region32_init(&gs->texture_damage);
 
        weston_buffer_reference(&gs->buffer_ref, NULL);
 }
@@ -1248,6 +1249,7 @@ gl_renderer_create_surface(struct weston_surface *surface)
         */
        gs->pitch = 1;
 
+       pixman_region32_init(&gs->texture_damage);
        surface->renderer_state = gs;
 
        return 0;
@@ -1266,6 +1268,7 @@ gl_renderer_destroy_surface(struct weston_surface *surface)
                gr->destroy_image(gr->egl_display, gs->images[i]);
 
        weston_buffer_reference(&gs->buffer_ref, NULL);
+       pixman_region32_fini(&gs->texture_damage);
        free(gs);
 }