mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-12-26 19:39:49 +01:00
surface: introduce commit sequence numbers
Very similar to output commit sequence numbers. Can be useful to reference a specific commit.
This commit is contained in:
parent
78d21fa131
commit
7ac76aba8a
2 changed files with 7 additions and 0 deletions
|
@ -31,6 +31,9 @@ enum wlr_surface_state_field {
|
|||
|
||||
struct wlr_surface_state {
|
||||
uint32_t committed; // enum wlr_surface_state_field
|
||||
// Sequence number of the surface state. Incremented on each commit, may
|
||||
// overflow.
|
||||
uint32_t seq;
|
||||
|
||||
struct wl_resource *buffer_resource;
|
||||
int32_t dx, dy; // relative to previous position
|
||||
|
|
|
@ -295,6 +295,7 @@ static void surface_state_copy(struct wlr_surface_state *state,
|
|||
}
|
||||
|
||||
state->committed |= next->committed;
|
||||
state->seq = next->seq;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -418,6 +419,7 @@ static void surface_commit_pending(struct wlr_surface *surface) {
|
|||
|
||||
surface_state_copy(&surface->previous, &surface->current);
|
||||
surface_state_move(&surface->current, &surface->pending);
|
||||
surface->pending.seq = surface->current.seq + 1;
|
||||
|
||||
if (invalid_buffer) {
|
||||
surface_apply_damage(surface);
|
||||
|
@ -491,6 +493,7 @@ static void subsurface_commit(struct wlr_subsurface *subsurface) {
|
|||
if (subsurface_is_synchronized(subsurface)) {
|
||||
surface_state_move(&subsurface->cached, &surface->pending);
|
||||
subsurface->has_cache = true;
|
||||
surface->pending.seq = subsurface->cached.seq + 1;
|
||||
} else {
|
||||
if (subsurface->has_cache) {
|
||||
surface_state_move(&surface->pending, &subsurface->cached);
|
||||
|
@ -692,6 +695,7 @@ struct wlr_surface *wlr_surface_create(struct wl_client *client,
|
|||
surface_state_init(&surface->current);
|
||||
surface_state_init(&surface->pending);
|
||||
surface_state_init(&surface->previous);
|
||||
surface->pending.seq = 1;
|
||||
|
||||
wl_signal_init(&surface->events.commit);
|
||||
wl_signal_init(&surface->events.destroy);
|
||||
|
|
Loading…
Reference in a new issue