Mercurial > dwindows
changeset 818:c17634e2b303
More safety checks in the drawing functions.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 26 Mar 2011 05:24:01 +0000 |
parents | 2d0681b8d8f6 |
children | 2dd7638a7719 |
files | gtk3/dw.c |
diffstat | 1 files changed, 59 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/gtk3/dw.c Sat Mar 26 05:14:54 2011 +0000 +++ b/gtk3/dw.c Sat Mar 26 05:24:01 2011 +0000 @@ -6591,7 +6591,16 @@ DW_MUTEX_LOCK; if(handle) - cr = gdk_cairo_create(gtk_widget_get_window(handle)); + { + GdkWindow *window = gtk_widget_get_window(handle); + /* Safety check for non-existant windows */ + if(!window || !GDK_IS_WINDOW(window)) + { + DW_MUTEX_UNLOCK; + return; + } + cr = gdk_cairo_create(window); + } else if(pixmap) cr = cairo_create(pixmap->image); if(cr) @@ -6623,7 +6632,16 @@ DW_MUTEX_LOCK; if(handle) - cr = gdk_cairo_create(gtk_widget_get_window(handle)); + { + GdkWindow *window = gtk_widget_get_window(handle); + /* Safety check for non-existant windows */ + if(!window || !GDK_IS_WINDOW(window)) + { + DW_MUTEX_UNLOCK; + return; + } + cr = gdk_cairo_create(window); + } else if(pixmap) cr = cairo_create(pixmap->image); if(cr) @@ -6657,7 +6675,16 @@ DW_MUTEX_LOCK; if(handle) - cr = gdk_cairo_create(gtk_widget_get_window(handle)); + { + GdkWindow *window = gtk_widget_get_window(handle); + /* Safety check for non-existant windows */ + if(!window || !GDK_IS_WINDOW(window)) + { + DW_MUTEX_UNLOCK; + return; + } + cr = gdk_cairo_create(window); + } else if(pixmap) cr = cairo_create(pixmap->image); if(cr) @@ -6696,7 +6723,16 @@ DW_MUTEX_LOCK; if(handle) - cr = gdk_cairo_create(gtk_widget_get_window(handle)); + { + GdkWindow *window = gtk_widget_get_window(handle); + /* Safety check for non-existant windows */ + if(!window || !GDK_IS_WINDOW(window)) + { + DW_MUTEX_UNLOCK; + return; + } + cr = gdk_cairo_create(window); + } else if(pixmap) cr = cairo_create(pixmap->image); if(cr) @@ -6738,7 +6774,14 @@ DW_MUTEX_LOCK; if(handle) { - cr = gdk_cairo_create(gtk_widget_get_window(handle)); + GdkWindow *window = gtk_widget_get_window(handle); + /* Safety check for non-existant windows */ + if(!window || !GDK_IS_WINDOW(window)) + { + DW_MUTEX_UNLOCK; + return; + } + cr = gdk_cairo_create(window); fontname = (char *)g_object_get_data(G_OBJECT(handle), "_dw_fontname"); } else if(pixmap) @@ -7043,6 +7086,7 @@ DW_MUTEX_LOCK; g_object_unref(G_OBJECT(pixmap->pixbuf)); + cairo_surface_destroy(pixmap->image); free(pixmap); DW_MUTEX_UNLOCK; } @@ -7076,7 +7120,16 @@ DW_MUTEX_LOCK; if(dest) - cr = gdk_cairo_create(gtk_widget_get_window(dest)); + { + GdkWindow *window = gtk_widget_get_window(dest); + /* Safety check for non-existant windows */ + if(!window || !GDK_IS_WINDOW(window)) + { + DW_MUTEX_UNLOCK; + return; + } + cr = gdk_cairo_create(window); + } else if(destp) cr = cairo_create(destp->image);