subsurface: immediately unlock cached state in set_desync
set_desync takes effect immediately without waiting for the next wl_surface.commit request.
This commit is contained in:
parent
8ecc557ab0
commit
80dbb9ba71
|
@ -525,10 +525,6 @@ static void subsurface_commit(struct wlr_subsurface *subsurface) {
|
||||||
}
|
}
|
||||||
subsurface->has_cache = true;
|
subsurface->has_cache = true;
|
||||||
subsurface->cached_seq = wlr_surface_lock_pending(surface);
|
subsurface->cached_seq = wlr_surface_lock_pending(surface);
|
||||||
} else if (subsurface->has_cache) {
|
|
||||||
wlr_surface_unlock_cached(surface, subsurface->cached_seq);
|
|
||||||
subsurface->has_cache = false;
|
|
||||||
subsurface->cached_seq = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -964,7 +960,13 @@ static void subsurface_handle_set_desync(struct wl_client *client,
|
||||||
subsurface->synchronized = false;
|
subsurface->synchronized = false;
|
||||||
|
|
||||||
if (!subsurface_is_synchronized(subsurface)) {
|
if (!subsurface_is_synchronized(subsurface)) {
|
||||||
// TODO: do a synchronized commit to flush the cache
|
if (subsurface->has_cache) {
|
||||||
|
wlr_surface_unlock_cached(subsurface->surface,
|
||||||
|
subsurface->cached_seq);
|
||||||
|
subsurface->has_cache = false;
|
||||||
|
subsurface->cached_seq = 0;
|
||||||
|
}
|
||||||
|
|
||||||
subsurface_parent_commit(subsurface, true);
|
subsurface_parent_commit(subsurface, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue