aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--types/wlr_surface.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/types/wlr_surface.c b/types/wlr_surface.c
index abe830f4..f93b2563 100644
--- a/types/wlr_surface.c
+++ b/types/wlr_surface.c
@@ -169,14 +169,13 @@ static bool wlr_surface_update_size(struct wlr_surface *surface,
wl_list_init(&state->frame_callback_list);
bool update_damage = false;
- if (width < state->width) {
- pixman_region32_union_rect(&state->surface_damage, &state->surface_damage,
- width, 0, state->width - width, state->height);
- update_damage = true;
- }
- if (height < state->height) {
- pixman_region32_union_rect(&state->surface_damage, &state->surface_damage,
- 0, height, state->width, state->height - height);
+ if (width != state->width || height != state->height) {
+ // Damage the whole surface on resize
+ // This isn't in the spec, but Weston does it and QT expects it
+ pixman_region32_union_rect(&state->surface_damage,
+ &state->surface_damage, 0, 0, state->width, state->height);
+ pixman_region32_union_rect(&state->surface_damage,
+ &state->surface_damage, 0, 0, width, height);
update_damage = true;
}