mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
[MetaWindowActor] Fix crash in shadow shape creation
Protect against shape_region or bounding_region being NULL in check_needs_shadow. This can happen for short lived windows and result into a crash. https://bugzilla.gnome.org/show_bug.cgi?id=635421
This commit is contained in:
parent
3183d954a0
commit
1394c566eb
@ -1887,24 +1887,26 @@ check_needs_shadow (MetaWindowActor *self)
|
|||||||
|
|
||||||
if (*shadow_location == NULL && should_have_shadow)
|
if (*shadow_location == NULL && should_have_shadow)
|
||||||
{
|
{
|
||||||
MetaShadowFactory *factory = meta_shadow_factory_get_default ();
|
|
||||||
const char *shadow_class = meta_window_actor_get_shadow_class (self);
|
|
||||||
cairo_rectangle_int_t shape_bounds;
|
|
||||||
|
|
||||||
if (priv->shadow_shape == NULL)
|
if (priv->shadow_shape == NULL)
|
||||||
{
|
{
|
||||||
if (priv->shaped)
|
if (priv->shaped && priv->shape_region)
|
||||||
priv->shadow_shape = meta_window_shape_new (priv->shape_region);
|
priv->shadow_shape = meta_window_shape_new (priv->shape_region);
|
||||||
else
|
else if (priv->bounding_region)
|
||||||
priv->shadow_shape = meta_window_shape_new (priv->bounding_region);
|
priv->shadow_shape = meta_window_shape_new (priv->bounding_region);
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_window_actor_get_shape_bounds (self, &shape_bounds);
|
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;
|
||||||
|
|
||||||
*shadow_location = meta_shadow_factory_get_shadow (factory,
|
meta_window_actor_get_shape_bounds (self, &shape_bounds);
|
||||||
priv->shadow_shape,
|
*shadow_location = meta_shadow_factory_get_shadow (factory,
|
||||||
shape_bounds.width, shape_bounds.height,
|
priv->shadow_shape,
|
||||||
shadow_class, appears_focused);
|
shape_bounds.width, shape_bounds.height,
|
||||||
|
shadow_class, appears_focused);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old_shadow != NULL)
|
if (old_shadow != NULL)
|
||||||
|
Loading…
Reference in New Issue
Block a user