surface-actor-wayland: Do not acquire scanout if actor appears obscured
This can happen if a texture was newly assigned to the actor, but the unobscured region hasn't been updated yet. Without bailing here, the actor would display correctly via direct scanout, but other parts of mutter would continue considering it obscured, which would e.g. result in no frame callbacks getting sent for its surface. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1636 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2112>
This commit is contained in:
parent
858b5c12b1
commit
2c70120555
@ -73,6 +73,12 @@ meta_surface_actor_wayland_try_acquire_scanout (MetaSurfaceActorWayland *self,
|
|||||||
MetaWaylandSurface *surface;
|
MetaWaylandSurface *surface;
|
||||||
CoglScanout *scanout;
|
CoglScanout *scanout;
|
||||||
|
|
||||||
|
/* If the actor appears to be obscured, need to go through the normal paint
|
||||||
|
* machinery to ensure the unobscured region is up to date
|
||||||
|
*/
|
||||||
|
if (meta_surface_actor_is_obscured (META_SURFACE_ACTOR (self)))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
surface = meta_surface_actor_wayland_get_surface (self);
|
surface = meta_surface_actor_wayland_get_surface (self);
|
||||||
if (!surface)
|
if (!surface)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user