Index: mutter-3.4.1/src/compositor/meta-window-group.c =================================================================== --- mutter-3.4.1.orig/src/compositor/meta-window-group.c 2012-02-23 01:21:36.000000000 +0100 +++ mutter-3.4.1/src/compositor/meta-window-group.c 2013-05-24 15:58:22.881599438 +0200 @@ -105,18 +105,12 @@ meta_window_group_paint (ClutterActor *actor) { cairo_region_t *visible_region; - cairo_region_t *unredirected_window_region = NULL; ClutterActor *stage; - cairo_rectangle_int_t visible_rect, unredirected_rect; + cairo_rectangle_int_t visible_rect; GList *children, *l; MetaWindowGroup *window_group = META_WINDOW_GROUP (actor); MetaCompScreen *info = meta_screen_get_compositor_data (window_group->screen); - if (info->unredirected_window != NULL) - { - meta_window_actor_get_shape_bounds (META_WINDOW_ACTOR (info->unredirected_window), &unredirected_rect); - unredirected_window_region = cairo_region_create_rectangle (&unredirected_rect); - } /* We walk the list from top to bottom (opposite of painting order), * and subtract the opaque area of each window out of the visible @@ -137,14 +131,23 @@ visible_region = cairo_region_create_rectangle (&visible_rect); - if (unredirected_window_region) - cairo_region_subtract (visible_region, unredirected_window_region); + if (info->unredirected_window != NULL) + { + int x, y; + cairo_rectangle_int_t unredirected_rect; + MetaWindow *window = meta_window_actor_get_meta_window (info->unredirected_window); + meta_window_get_outer_rect (window, &unredirected_rect); + cairo_region_subtract_rectangle (visible_region, &unredirected_rect); + } for (l = children; l; l = l->next) { if (!CLUTTER_ACTOR_IS_VISIBLE (l->data)) continue; + if (l->data == info->unredirected_window) + continue; + /* If an actor has effects applied, then that can change the area * it paints and the opacity, so we no longer can figure out what * portion of the actor is obscured and what portion of the screen @@ -196,9 +199,6 @@ cairo_region_destroy (visible_region); - if (unredirected_window_region) - cairo_region_destroy (unredirected_window_region); - CLUTTER_ACTOR_CLASS (meta_window_group_parent_class)->paint (actor); /* Now that we are done painting, unset the visible regions (they will