[mutter] [MetaWindowActor] Fix crash in shadow shape creation
- From: Adel Gadllah <agadllah src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] [MetaWindowActor] Fix crash in shadow shape creation
- Date: Sun, 21 Nov 2010 18:58:09 +0000 (UTC)
commit 1394c566ebfac3ea41ee2f70b57279a58921ea23
Author: Adel Gadllah <adel gadllah gmail com>
Date: Sun Nov 21 19:57:42 2010 +0100
[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
src/compositor/meta-window-actor.c | 26 ++++++++++++++------------
1 files changed, 14 insertions(+), 12 deletions(-)
---
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index c737d6d..573ce2d 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -1887,24 +1887,26 @@ check_needs_shadow (MetaWindowActor *self)
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->shaped)
+ if (priv->shaped && 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);
}
- 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 (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;
+
+ 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)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]