Commit 996541d0 authored by Matthias Clasen's avatar Matthias Clasen

Don't crash in DND when the X server doesn't support SHAPE

Reported in bug 612768
parent e9b4d7c6
......@@ -4604,14 +4604,18 @@ _xwindow_get_shape (Display *xdisplay,
gint rn, ord, i;
shape = NULL;
rn = 0;
xrl = XShapeGetRectangles (xdisplay,
window,
shape_type, &rn, &ord);
if (xrl == NULL)
return NULL; /* XShape not supported */
if (rn == 0)
return gdk_region_new (); /* Empty */
if (ord != YXBanded)
{
/* This really shouldn't happen with any xserver, as they
......@@ -4648,21 +4652,20 @@ _gdk_windowing_get_shape_for_mask (GdkBitmap *mask)
display = gdk_drawable_get_display (GDK_DRAWABLE (mask));
window = XCreateSimpleWindow (GDK_DISPLAY_XDISPLAY (display),
GDK_SCREEN_XROOTWIN (gdk_display_get_default_screen (display)),
-1, -1, 1, 1, 0,
0, 0);
GDK_SCREEN_XROOTWIN (gdk_display_get_default_screen (display)),
-1, -1, 1, 1, 0,
0, 0);
XShapeCombineMask (GDK_DISPLAY_XDISPLAY (display),
window,
ShapeBounding,
0, 0,
GDK_PIXMAP_XID (mask),
ShapeSet);
window,
ShapeBounding,
0, 0,
GDK_PIXMAP_XID (mask),
ShapeSet);
region = _xwindow_get_shape (GDK_DISPLAY_XDISPLAY (display),
window, ShapeBounding);
window, ShapeBounding);
XDestroyWindow (GDK_DISPLAY_XDISPLAY (display),
window);
XDestroyWindow (GDK_DISPLAY_XDISPLAY (display), window);
return region;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment