Mercurial > dwindows
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 { |