surface: Replace viewport.changed with weston_surface_status

Instead of having an individual bool, reuse the surface state's dirty
status for viewport changes.

Signed-off-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
Daniel Stone 2023-06-21 11:58:01 +01:00
parent 8255274a92
commit 6526346b72
2 changed files with 8 additions and 23 deletions

View File

@ -1577,8 +1577,6 @@ struct weston_buffer_viewport {
*/
int32_t width, height;
} surface;
bool changed;
};
struct weston_buffer_release {

View File

@ -619,7 +619,6 @@ weston_surface_state_init(struct weston_surface_state *state)
state->buffer_viewport.buffer.scale = 1;
state->buffer_viewport.buffer.src_width = wl_fixed_from_int(-1);
state->buffer_viewport.surface.width = -1;
state->buffer_viewport.changed = false;
state->acquire_fence_fd = -1;
@ -2139,13 +2138,6 @@ weston_surface_unmap(struct weston_surface *surface)
weston_signal_emit_mutable(&surface->unmap_signal, surface);
}
static void
weston_surface_reset_pending_buffer(struct weston_surface *surface)
{
weston_surface_state_set_buffer(&surface->pending, NULL);
surface->pending.buffer_viewport.changed = false;
}
WL_EXPORT void
weston_view_destroy(struct weston_view *view)
{
@ -4118,8 +4110,6 @@ weston_surface_commit_state(struct weston_surface *surface,
/* wp_viewport.set_source */
/* wp_viewport.set_destination */
surface->buffer_viewport = state->buffer_viewport;
if (surface->buffer_viewport.changed)
status |= WESTON_SURFACE_DIRTY_SIZE;
/* wl_surface.attach */
if (status & WESTON_SURFACE_DIRTY_BUFFER) {
@ -4162,7 +4152,6 @@ weston_surface_commit_state(struct weston_surface *surface,
state->sx = 0;
state->sy = 0;
state->buffer_viewport.changed = false;
/* wl_surface.damage and wl_surface.damage_buffer */
if (pixman_region32_not_empty(&state->damage_surface) ||
@ -4331,7 +4320,7 @@ surface_set_buffer_transform(struct wl_client *client,
}
surface->pending.buffer_viewport.buffer.transform = transform;
surface->pending.buffer_viewport.changed = true;
surface->pending.status |= WESTON_SURFACE_DIRTY_SIZE;
}
static void
@ -4350,7 +4339,7 @@ surface_set_buffer_scale(struct wl_client *client,
}
surface->pending.buffer_viewport.buffer.scale = scale;
surface->pending.buffer_viewport.changed = true;
surface->pending.status |= WESTON_SURFACE_DIRTY_SIZE;
}
static void
@ -4545,14 +4534,12 @@ weston_subsurface_commit_to_cache(struct weston_subsurface *sub)
sub->cached.sx += surface->pending.sx;
sub->cached.sy += surface->pending.sy;
sub->cached.buffer_viewport.changed |=
surface->pending.buffer_viewport.changed;
sub->cached.buffer_viewport.buffer =
surface->pending.buffer_viewport.buffer;
sub->cached.buffer_viewport.surface =
surface->pending.buffer_viewport.surface;
weston_surface_reset_pending_buffer(surface);
weston_surface_state_set_buffer(&surface->pending, NULL);
surface->pending.sx = 0;
surface->pending.sy = 0;
@ -7887,7 +7874,7 @@ destroy_viewport(struct wl_resource *resource)
surface->pending.buffer_viewport.buffer.src_width =
wl_fixed_from_int(-1);
surface->pending.buffer_viewport.surface.width = -1;
surface->pending.buffer_viewport.changed = true;
surface->pending.status |= WESTON_SURFACE_DIRTY_SIZE;
}
static void
@ -7925,7 +7912,7 @@ viewport_set_source(struct wl_client *client,
/* unset source rect */
surface->pending.buffer_viewport.buffer.src_width =
wl_fixed_from_int(-1);
surface->pending.buffer_viewport.changed = true;
surface->pending.status |= WESTON_SURFACE_DIRTY_SIZE;
return;
}
@ -7946,7 +7933,7 @@ viewport_set_source(struct wl_client *client,
surface->pending.buffer_viewport.buffer.src_y = src_y;
surface->pending.buffer_viewport.buffer.src_width = src_width;
surface->pending.buffer_viewport.buffer.src_height = src_height;
surface->pending.buffer_viewport.changed = true;
surface->pending.status |= WESTON_SURFACE_DIRTY_SIZE;
}
static void
@ -7970,7 +7957,7 @@ viewport_set_destination(struct wl_client *client,
if (dst_width == -1 && dst_height == -1) {
/* unset destination size */
surface->pending.buffer_viewport.surface.width = -1;
surface->pending.buffer_viewport.changed = true;
surface->pending.status |= WESTON_SURFACE_DIRTY_SIZE;
return;
}
@ -7984,7 +7971,7 @@ viewport_set_destination(struct wl_client *client,
surface->pending.buffer_viewport.surface.width = dst_width;
surface->pending.buffer_viewport.surface.height = dst_height;
surface->pending.buffer_viewport.changed = true;
surface->pending.status |= WESTON_SURFACE_DIRTY_SIZE;
}
static const struct wp_viewport_interface viewport_interface = {