surface: remove wlr_surface.texture

The texture is managed by the surface's wlr_buffer now. In
particular, the buffer can destroy the texture early if it becomes
invalid.
This commit is contained in:
emersion 2018-06-13 19:38:10 +01:00
parent d643361c48
commit 0378d143d9
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
5 changed files with 38 additions and 15 deletions

View file

@ -189,7 +189,8 @@ static void render_surface(struct wlr_surface *surface, int sx, int sy,
struct roots_output *output = data->output;
float rotation = data->layout.rotation;
if (!wlr_surface_has_buffer(surface)) {
struct wlr_texture *texture = wlr_surface_get_texture(surface);
if (texture == NULL) {
return;
}
@ -230,8 +231,7 @@ static void render_surface(struct wlr_surface *surface, int sx, int sy,
pixman_box32_t *rects = pixman_region32_rectangles(&damage, &nrects);
for (int i = 0; i < nrects; ++i) {
scissor_output(output, &rects[i]);
wlr_render_texture_with_matrix(renderer, surface->texture, matrix,
data->alpha);
wlr_render_texture_with_matrix(renderer, texture, matrix, data->alpha);
}
damage_finish: