From 6831f2edb46db1de8ca2ed853bcfc299518e22f6 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Sun, 23 Feb 2020 16:13:54 +0100 Subject: [PATCH] window-actor/x11: Disable culling on window actor level This shape region culling was wrongly implemented in f5a28aa9, as it does not take frame offsets into account, and is also redundant, as we already set the opaque region of the underlying surface accordingly. The other parts were implemented in ac7aa114, the reason given in the commit message: ``` Wayland clients do this through the opaque region in the surface actor. However X11 clients were considered fully transparent for culling purposes, which may result in mutter painting other bits of the background or other windows that will be painted over in reality. ``` is wrong though - culling on X11 actors works just fine and did only not work in Wayland sessions because of a bug that got fixed in 19814497. In conclusion the whole part appears to be redundand and some testing done suggests the same. Drop it. https://gitlab.gnome.org/GNOME/mutter/merge_requests/1082 --- src/compositor/meta-window-actor-x11.c | 39 -------------------------- 1 file changed, 39 deletions(-) diff --git a/src/compositor/meta-window-actor-x11.c b/src/compositor/meta-window-actor-x11.c index 15cfa5fcf..ef50b1ada 100644 --- a/src/compositor/meta-window-actor-x11.c +++ b/src/compositor/meta-window-actor-x11.c @@ -1451,45 +1451,6 @@ meta_window_actor_x11_cull_out (MetaCullable *cullable, cullable_parent_iface->cull_out (cullable, unobscured_region, clip_region); - if ((unobscured_region || clip_region) && - meta_window_actor_is_opaque (META_WINDOW_ACTOR (self))) - { - MetaWindow *window = - meta_window_actor_get_meta_window (META_WINDOW_ACTOR (self)); - - if (window->shape_region) - { - if (unobscured_region) - cairo_region_subtract (unobscured_region, window->shape_region); - if (clip_region) - cairo_region_subtract (clip_region, window->shape_region); - } - else - { - cairo_region_t *region = meta_window_get_frame_bounds (window); - - if (region) - { - if (unobscured_region) - cairo_region_subtract (unobscured_region, region); - if (clip_region) - cairo_region_subtract (clip_region, region); - } - else - { - cairo_rectangle_int_t rect; - - meta_window_get_frame_rect (window, &rect); - rect.x = rect.y = 0; - - if (unobscured_region) - cairo_region_subtract_rectangle (unobscured_region, &rect); - if (clip_region) - cairo_region_subtract_rectangle (clip_region, &rect); - } - } - } - set_clip_region_beneath (self, clip_region); }