comparison gtk3/dw.c @ 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 19a632499344
comparison
equal deleted inserted replaced
817:2d0681b8d8f6 818:c17634e2b303
6589 int _locked_by_me = FALSE; 6589 int _locked_by_me = FALSE;
6590 cairo_t *cr = NULL; 6590 cairo_t *cr = NULL;
6591 6591
6592 DW_MUTEX_LOCK; 6592 DW_MUTEX_LOCK;
6593 if(handle) 6593 if(handle)
6594 cr = gdk_cairo_create(gtk_widget_get_window(handle)); 6594 {
6595 GdkWindow *window = gtk_widget_get_window(handle);
6596 /* Safety check for non-existant windows */
6597 if(!window || !GDK_IS_WINDOW(window))
6598 {
6599 DW_MUTEX_UNLOCK;
6600 return;
6601 }
6602 cr = gdk_cairo_create(window);
6603 }
6595 else if(pixmap) 6604 else if(pixmap)
6596 cr = cairo_create(pixmap->image); 6605 cr = cairo_create(pixmap->image);
6597 if(cr) 6606 if(cr)
6598 { 6607 {
6599 int index = _find_thread_index(dw_thread_id()); 6608 int index = _find_thread_index(dw_thread_id());
6621 int _locked_by_me = FALSE; 6630 int _locked_by_me = FALSE;
6622 cairo_t *cr = NULL; 6631 cairo_t *cr = NULL;
6623 6632
6624 DW_MUTEX_LOCK; 6633 DW_MUTEX_LOCK;
6625 if(handle) 6634 if(handle)
6626 cr = gdk_cairo_create(gtk_widget_get_window(handle)); 6635 {
6636 GdkWindow *window = gtk_widget_get_window(handle);
6637 /* Safety check for non-existant windows */
6638 if(!window || !GDK_IS_WINDOW(window))
6639 {
6640 DW_MUTEX_UNLOCK;
6641 return;
6642 }
6643 cr = gdk_cairo_create(window);
6644 }
6627 else if(pixmap) 6645 else if(pixmap)
6628 cr = cairo_create(pixmap->image); 6646 cr = cairo_create(pixmap->image);
6629 if(cr) 6647 if(cr)
6630 { 6648 {
6631 int index = _find_thread_index(dw_thread_id()); 6649 int index = _find_thread_index(dw_thread_id());
6655 cairo_t *cr = NULL; 6673 cairo_t *cr = NULL;
6656 int z; 6674 int z;
6657 6675
6658 DW_MUTEX_LOCK; 6676 DW_MUTEX_LOCK;
6659 if(handle) 6677 if(handle)
6660 cr = gdk_cairo_create(gtk_widget_get_window(handle)); 6678 {
6679 GdkWindow *window = gtk_widget_get_window(handle);
6680 /* Safety check for non-existant windows */
6681 if(!window || !GDK_IS_WINDOW(window))
6682 {
6683 DW_MUTEX_UNLOCK;
6684 return;
6685 }
6686 cr = gdk_cairo_create(window);
6687 }
6661 else if(pixmap) 6688 else if(pixmap)
6662 cr = cairo_create(pixmap->image); 6689 cr = cairo_create(pixmap->image);
6663 if(cr) 6690 if(cr)
6664 { 6691 {
6665 int index = _find_thread_index(dw_thread_id()); 6692 int index = _find_thread_index(dw_thread_id());
6694 int _locked_by_me = FALSE; 6721 int _locked_by_me = FALSE;
6695 cairo_t *cr = NULL; 6722 cairo_t *cr = NULL;
6696 6723
6697 DW_MUTEX_LOCK; 6724 DW_MUTEX_LOCK;
6698 if(handle) 6725 if(handle)
6699 cr = gdk_cairo_create(gtk_widget_get_window(handle)); 6726 {
6727 GdkWindow *window = gtk_widget_get_window(handle);
6728 /* Safety check for non-existant windows */
6729 if(!window || !GDK_IS_WINDOW(window))
6730 {
6731 DW_MUTEX_UNLOCK;
6732 return;
6733 }
6734 cr = gdk_cairo_create(window);
6735 }
6700 else if(pixmap) 6736 else if(pixmap)
6701 cr = cairo_create(pixmap->image); 6737 cr = cairo_create(pixmap->image);
6702 if(cr) 6738 if(cr)
6703 { 6739 {
6704 int index = _find_thread_index(dw_thread_id()); 6740 int index = _find_thread_index(dw_thread_id());
6736 return; 6772 return;
6737 6773
6738 DW_MUTEX_LOCK; 6774 DW_MUTEX_LOCK;
6739 if(handle) 6775 if(handle)
6740 { 6776 {
6741 cr = gdk_cairo_create(gtk_widget_get_window(handle)); 6777 GdkWindow *window = gtk_widget_get_window(handle);
6778 /* Safety check for non-existant windows */
6779 if(!window || !GDK_IS_WINDOW(window))
6780 {
6781 DW_MUTEX_UNLOCK;
6782 return;
6783 }
6784 cr = gdk_cairo_create(window);
6742 fontname = (char *)g_object_get_data(G_OBJECT(handle), "_dw_fontname"); 6785 fontname = (char *)g_object_get_data(G_OBJECT(handle), "_dw_fontname");
6743 } 6786 }
6744 else if(pixmap) 6787 else if(pixmap)
6745 { 6788 {
6746 fontname = (char *)g_object_get_data(G_OBJECT(pixmap->handle), "_dw_fontname"); 6789 fontname = (char *)g_object_get_data(G_OBJECT(pixmap->handle), "_dw_fontname");
7041 { 7084 {
7042 int _locked_by_me = FALSE; 7085 int _locked_by_me = FALSE;
7043 7086
7044 DW_MUTEX_LOCK; 7087 DW_MUTEX_LOCK;
7045 g_object_unref(G_OBJECT(pixmap->pixbuf)); 7088 g_object_unref(G_OBJECT(pixmap->pixbuf));
7089 cairo_surface_destroy(pixmap->image);
7046 free(pixmap); 7090 free(pixmap);
7047 DW_MUTEX_UNLOCK; 7091 DW_MUTEX_UNLOCK;
7048 } 7092 }
7049 7093
7050 /* 7094 /*
7074 if((!dest && (!destp || !destp->pixbuf)) || (!src && (!srcp || !srcp->pixbuf))) 7118 if((!dest && (!destp || !destp->pixbuf)) || (!src && (!srcp || !srcp->pixbuf)))
7075 return; 7119 return;
7076 7120
7077 DW_MUTEX_LOCK; 7121 DW_MUTEX_LOCK;
7078 if(dest) 7122 if(dest)
7079 cr = gdk_cairo_create(gtk_widget_get_window(dest)); 7123 {
7124 GdkWindow *window = gtk_widget_get_window(dest);
7125 /* Safety check for non-existant windows */
7126 if(!window || !GDK_IS_WINDOW(window))
7127 {
7128 DW_MUTEX_UNLOCK;
7129 return;
7130 }
7131 cr = gdk_cairo_create(window);
7132 }
7080 else if(destp) 7133 else if(destp)
7081 cr = cairo_create(destp->image); 7134 cr = cairo_create(destp->image);
7082 7135
7083 if(cr) 7136 if(cr)
7084 { 7137 {