diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c index 137a47bc1..681321a70 100644 --- a/src/compositor/meta-window-actor.c +++ b/src/compositor/meta-window-actor.c @@ -68,7 +68,7 @@ struct _MetaWindowActorPrivate gchar * desc; - /* If the window is shaped, a region that matches the shape */ + /* A region that matches the shape of the window, including frame bounds */ cairo_region_t *shape_region; /* A rectangular region with the visible extents of the window */ cairo_region_t *bounding_region; @@ -560,16 +560,7 @@ meta_window_actor_get_shape_bounds (MetaWindowActor *self, { MetaWindowActorPrivate *priv = self->priv; - /* We need to be defensive here because there are corner cases - * where getting the shape fails on a window being destroyed - * and similar. - */ - if (priv->shape_region) - cairo_region_get_extents (priv->shape_region, bounds); - else if (priv->bounding_region) - cairo_region_get_extents (priv->bounding_region, bounds); - else - bounds->x = bounds->y = bounds->width = bounds->height = 0; + cairo_region_get_extents (priv->shape_region, bounds); } static void @@ -1613,12 +1604,7 @@ meta_window_actor_get_obscured_region (MetaWindowActor *self) MetaWindowActorPrivate *priv = self->priv; if (!priv->argb32 && priv->opacity == 0xff && priv->back_pixmap) - { - if (priv->shape_region) - return priv->shape_region; - else - return priv->bounding_region; - } + return priv->shape_region; else return NULL; } @@ -1867,25 +1853,17 @@ check_needs_shadow (MetaWindowActor *self) if (*shadow_location == NULL && should_have_shadow) { if (priv->shadow_shape == NULL) - { - if (priv->shape_region) - priv->shadow_shape = meta_window_shape_new (priv->shape_region); - else if (priv->bounding_region) - priv->shadow_shape = meta_window_shape_new (priv->bounding_region); - } + priv->shadow_shape = meta_window_shape_new (priv->shape_region); - if (priv->shadow_shape != NULL) - { - MetaShadowFactory *factory = meta_shadow_factory_get_default (); - const char *shadow_class = meta_window_actor_get_shadow_class (self); - cairo_rectangle_int_t shape_bounds; + MetaShadowFactory *factory = meta_shadow_factory_get_default (); + const char *shadow_class = meta_window_actor_get_shadow_class (self); + cairo_rectangle_int_t shape_bounds; - meta_window_actor_get_shape_bounds (self, &shape_bounds); - *shadow_location = meta_shadow_factory_get_shadow (factory, - priv->shadow_shape, - shape_bounds.width, shape_bounds.height, - shadow_class, appears_focused); - } + meta_window_actor_get_shape_bounds (self, &shape_bounds); + *shadow_location = meta_shadow_factory_get_shadow (factory, + priv->shadow_shape, + shape_bounds.width, shape_bounds.height, + shadow_class, appears_focused); } if (old_shadow != NULL)