surface: don't unset width and height in finalize

During surface finalization we may not have received a new buffer,
resetting width and height in this case is wrong since we display the
old buffer in this case.
This commit is contained in:
Rouven Czerwinski 2020-06-18 08:15:34 +02:00 committed by Simon Ser
parent c768309ab4
commit c18c419b56

View file

@ -174,17 +174,17 @@ static void surface_state_finalize(struct wlr_surface *surface,
} }
} }
if (state->buffer_resource != NULL) {
if (state->viewport.has_dst) { if (state->viewport.has_dst) {
if (state->buffer_width == 0 && state->buffer_height == 0) {
state->width = state->height = 0;
} else {
state->width = state->viewport.dst_width; state->width = state->viewport.dst_width;
state->height = state->viewport.dst_height; state->height = state->viewport.dst_height;
}
} else { } else {
surface_state_viewport_src_size(state, surface_state_viewport_src_size(state,
&state->width, &state->height); &state->width, &state->height);
} }
} else {
state->width = state->height = 0;
}
pixman_region32_intersect_rect(&state->surface_damage, pixman_region32_intersect_rect(&state->surface_damage,
&state->surface_damage, 0, 0, state->width, state->height); &state->surface_damage, 0, 0, state->width, state->height);