diff options
author | Adel Gadllah <adel.gadllah@gmail.com> | 2010-09-27 20:10:35 +0200 |
---|---|---|
committer | Adel Gadllah <adel.gadllah@gmail.com> | 2010-09-27 20:11:53 +0200 |
commit | 1123fca3f285e11e2dfa966c6a74d39ad8e6dbc0 (patch) | |
tree | a676796205005a04630274fe33d144218bb41feb | |
parent | 33e2d154956abe171e7fdd16053b0ad25dc27694 (diff) | |
download | mutter-1123fca3f285e11e2dfa966c6a74d39ad8e6dbc0.tar.gz |
mutter-window: Add error traps check_needs_reshape
A window might change its shape and close immediately and thus causing
XShapeGetRectangles to produce a BadWindow, use an error trap
to avoid that.
-rw-r--r-- | src/compositor/mutter-window.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/compositor/mutter-window.c b/src/compositor/mutter-window.c index 299566ea1..012d818db 100644 --- a/src/compositor/mutter-window.c +++ b/src/compositor/mutter-window.c @@ -1712,6 +1712,8 @@ static void check_needs_reshape (MutterWindow *self) { MutterWindowPrivate *priv = self->priv; + MetaScreen *screen = priv->screen; + MetaDisplay *display = meta_screen_get_display (screen); if (!priv->needs_reshape) return; @@ -1722,15 +1724,17 @@ check_needs_reshape (MutterWindow *self) #ifdef HAVE_SHAPE if (priv->shaped) { - Display *xdisplay = meta_display_get_xdisplay (meta_window_get_display (priv->window)); + Display *xdisplay = meta_display_get_xdisplay (display); XRectangle *rects; int n_rects, ordering; + meta_error_trap_push (display); rects = XShapeGetRectangles (xdisplay, priv->xwindow, ShapeBounding, &n_rects, &ordering); + meta_error_trap_pop (display, TRUE); if (rects) { |