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.
This commit is contained in:
parent
33e2d15495
commit
1123fca3f2
@ -1712,6 +1712,8 @@ static void
|
|||||||
check_needs_reshape (MutterWindow *self)
|
check_needs_reshape (MutterWindow *self)
|
||||||
{
|
{
|
||||||
MutterWindowPrivate *priv = self->priv;
|
MutterWindowPrivate *priv = self->priv;
|
||||||
|
MetaScreen *screen = priv->screen;
|
||||||
|
MetaDisplay *display = meta_screen_get_display (screen);
|
||||||
|
|
||||||
if (!priv->needs_reshape)
|
if (!priv->needs_reshape)
|
||||||
return;
|
return;
|
||||||
@ -1722,15 +1724,17 @@ check_needs_reshape (MutterWindow *self)
|
|||||||
#ifdef HAVE_SHAPE
|
#ifdef HAVE_SHAPE
|
||||||
if (priv->shaped)
|
if (priv->shaped)
|
||||||
{
|
{
|
||||||
Display *xdisplay = meta_display_get_xdisplay (meta_window_get_display (priv->window));
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
XRectangle *rects;
|
XRectangle *rects;
|
||||||
int n_rects, ordering;
|
int n_rects, ordering;
|
||||||
|
|
||||||
|
meta_error_trap_push (display);
|
||||||
rects = XShapeGetRectangles (xdisplay,
|
rects = XShapeGetRectangles (xdisplay,
|
||||||
priv->xwindow,
|
priv->xwindow,
|
||||||
ShapeBounding,
|
ShapeBounding,
|
||||||
&n_rects,
|
&n_rects,
|
||||||
&ordering);
|
&ordering);
|
||||||
|
meta_error_trap_pop (display, TRUE);
|
||||||
|
|
||||||
if (rects)
|
if (rects)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user