surface: fix damage when resizing a surface in QT apps

This commit is contained in:
emersion 2018-01-27 21:49:40 +01:00
parent 7adf13e284
commit 861d5bdff2
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48

View file

@ -169,14 +169,13 @@ static bool wlr_surface_update_size(struct wlr_surface *surface,
wl_list_init(&state->frame_callback_list); wl_list_init(&state->frame_callback_list);
bool update_damage = false; bool update_damage = false;
if (width < state->width) { if (width != state->width || height != state->height) {
pixman_region32_union_rect(&state->surface_damage, &state->surface_damage, // Damage the whole surface on resize
width, 0, state->width - width, state->height); // This isn't in the spec, but Weston does it and QT expects it
update_damage = true; pixman_region32_union_rect(&state->surface_damage,
} &state->surface_damage, 0, 0, state->width, state->height);
if (height < state->height) { pixman_region32_union_rect(&state->surface_damage,
pixman_region32_union_rect(&state->surface_damage, &state->surface_damage, &state->surface_damage, 0, 0, width, height);
0, height, state->width, state->height - height);
update_damage = true; update_damage = true;
} }