compositor/native: Consider Wayland subsurfaces for scanout

If a Wayland subsurface is the topmost actor, consider in for
scanout as well. This will extend our scanout capabilities to apps
like Firefox

While on it, correct a unnessary type check to a NULL check.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2211>
This commit is contained in:
Robert Mader 2022-01-07 17:31:47 +01:00 committed by Marge Bot
parent 8abe876d15
commit df3f81e709

View File

@ -95,9 +95,6 @@ maybe_assign_primary_plane (MetaCompositor *compositor)
if (clutter_actor_has_transitions (CLUTTER_ACTOR (window_actor))) if (clutter_actor_has_transitions (CLUTTER_ACTOR (window_actor)))
goto done; goto done;
if (clutter_actor_get_n_children (CLUTTER_ACTOR (window_actor)) != 1)
goto done;
window = meta_window_actor_get_meta_window (window_actor); window = meta_window_actor_get_meta_window (window_actor);
if (!window) if (!window)
goto done; goto done;
@ -114,8 +111,10 @@ maybe_assign_primary_plane (MetaCompositor *compositor)
if (!COGL_IS_ONSCREEN (framebuffer)) if (!COGL_IS_ONSCREEN (framebuffer))
goto done; goto done;
surface_actor = meta_window_actor_get_surface (window_actor); surface_actor = meta_window_actor_get_topmost_surface (window_actor);
if (!META_IS_SURFACE_ACTOR_WAYLAND (surface_actor)) if (!surface_actor ||
CLUTTER_ACTOR (surface_actor) !=
clutter_actor_get_last_child (CLUTTER_ACTOR (window_actor)))
goto done; goto done;
surface_actor_wayland = META_SURFACE_ACTOR_WAYLAND (surface_actor); surface_actor_wayland = META_SURFACE_ACTOR_WAYLAND (surface_actor);