summaryrefslogtreecommitdiff
path: root/gdk/gdkgc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdk/gdkgc.c')
-rw-r--r--gdk/gdkgc.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/gdk/gdkgc.c b/gdk/gdkgc.c
index 826b0829be..d007fd6e6f 100644
--- a/gdk/gdkgc.c
+++ b/gdk/gdkgc.c
@@ -32,17 +32,24 @@ gdk_gc_new_with_values (GdkWindow *window,
GdkGCValues *values,
GdkGCValuesMask values_mask)
{
+ GdkWindowPrivate *window_private;
GdkGC *gc;
GdkGCPrivate *private;
Window xwindow;
XGCValues xvalues;
unsigned long xvalues_mask;
+ g_return_val_if_fail (window != NULL, NULL);
+
+ window_private = (GdkWindowPrivate*) window;
+ if (window_private->destroyed)
+ return NULL;
+
private = g_new (GdkGCPrivate, 1);
gc = (GdkGC*) private;
- xwindow = ((GdkWindowPrivate*) window)->xwindow;
- private->xdisplay = ((GdkWindowPrivate*) window)->xdisplay;
+ xwindow = window_private->xwindow;
+ private->xdisplay = window_private->xdisplay;
xvalues.function = GXcopy;
xvalues.fill_style = FillSolid;
@@ -512,15 +519,22 @@ gdk_gc_set_clip_mask (GdkGC *gc,
{
GdkGCPrivate *private;
Pixmap xmask;
-
+
g_return_if_fail (gc != NULL);
-
- private = (GdkGCPrivate*) gc;
-
+
if (mask)
- xmask = ((GdkWindowPrivate*) mask)->xwindow;
+ {
+ GdkWindowPrivate *mask_private;
+
+ mask_private = (GdkWindowPrivate*) mask;
+ if (mask_private->destroyed)
+ return;
+ xmask = mask_private->xwindow;
+ }
else
xmask = None;
+
+ private = (GdkGCPrivate*) gc;
XSetClipMask (private->xdisplay, private->xgc, xmask);
}