Unset window pixmaps from MutterShapedWindow before freeing them

At least with the Mesa/DRI implementation of GLX, calling XFreePixmap()
on a pixmap before glxDestroyPixmap() on the corresponding GLX pixmap
causes an X error. To avoid triggering this with the new
ClutterTexturePixmapX11 code, we need to move our XFreePixmap after
unsetting the pixmap from the actor.

https://bugzilla.gnome.org/show_bug.cgi?id=627210
This commit is contained in:
Owen W. Taylor 2010-08-17 18:38:40 -04:00
parent 0839c100c0
commit 0b3327f04d

View File

@ -1028,10 +1028,10 @@ mutter_window_detach (MutterWindow *self)
if (!priv->back_pixmap) if (!priv->back_pixmap)
return; return;
XFreePixmap (xdisplay, priv->back_pixmap);
priv->back_pixmap = None; priv->back_pixmap = None;
clutter_x11_texture_pixmap_set_pixmap (CLUTTER_X11_TEXTURE_PIXMAP (priv->actor), clutter_x11_texture_pixmap_set_pixmap (CLUTTER_X11_TEXTURE_PIXMAP (priv->actor),
None); None);
XFreePixmap (xdisplay, priv->back_pixmap);
mutter_window_queue_create_pixmap (self); mutter_window_queue_create_pixmap (self);
} }