Merge pull request #1067 from emersion/fix-surface-double-release

surface: fix double wl_buffer.release events
This commit is contained in:
emersion 2018-06-17 18:24:34 +01:00 committed by GitHub
commit cc89906ddf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 9 deletions

View File

@ -325,8 +325,7 @@ static void surface_damage_subsurfaces(struct wlr_subsurface *subsurface) {
} }
} }
static void surface_apply_damage(struct wlr_surface *surface, static void surface_apply_damage(struct wlr_surface *surface) {
bool invalid_buffer) {
struct wl_resource *resource = surface->current->buffer; struct wl_resource *resource = surface->current->buffer;
if (resource == NULL) { if (resource == NULL) {
// NULL commit // NULL commit
@ -335,12 +334,6 @@ static void surface_apply_damage(struct wlr_surface *surface,
return; return;
} }
if (surface->buffer != NULL && !surface->buffer->released &&
!invalid_buffer) {
// The buffer is still the same, no need to re-upload
return;
}
if (surface->buffer != NULL && surface->buffer->released) { if (surface->buffer != NULL && surface->buffer->released) {
pixman_region32_t damage; pixman_region32_t damage;
pixman_region32_init(&damage); pixman_region32_init(&damage);
@ -376,7 +369,9 @@ static void surface_commit_pending(struct wlr_surface *surface) {
surface_move_state(surface, surface->pending, surface->current); surface_move_state(surface, surface->pending, surface->current);
surface_apply_damage(surface, invalid_buffer); if (invalid_buffer) {
surface_apply_damage(surface);
}
// commit subsurface order // commit subsurface order
struct wlr_subsurface *subsurface; struct wlr_subsurface *subsurface;