[gtk+/gtk-2-18] Don't crash in DND when the X server doesn't support SHAPE
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-2-18] Don't crash in DND when the X server doesn't support SHAPE
- Date: Wed, 17 Mar 2010 13:51:02 +0000 (UTC)
commit a66aa434f933526663d62d202f9bd7841d52449e
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Mar 16 12:35:13 2010 -0400
Don't crash in DND when the X server doesn't support SHAPE
Reported in bug 612768
(cherry picked from commit 996541d096d4d59e9baa384e5d5359a10567433e)
gdk/x11/gdkwindow-x11.c | 33 ++++++++++++++++++---------------
1 files changed, 18 insertions(+), 15 deletions(-)
---
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 1914258..58ff6a3 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -4606,14 +4606,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
@@ -4650,21 +4654,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;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]