Wireshark-dev: [Wireshark-dev] Please review: GSEAL fixes: allocation
From: Joerg Mayer <jmayer@xxxxxxxxx>
Date: Wed, 20 Jul 2011 20:23:41 +0200
Hello, I have fixed most of the struct GtkAllocation access errors when building with -DGSEAL (all occurences except rtp_player.c). As I really do not understand what I'm doing here, it would be nice if someone would be willing to review this, especially whether the call to gtk_widget_get_allocation() is often enough or too often. I have not spotted any changes in behavior, but I wouldn't really know what to test. Thanks Joerg -- Joerg Mayer <jmayer@xxxxxxxxx> We are stuck with technology when what we really want is just stuff that works. Some say that should read Microsoft instead of technology.
Index: tcp_graph.c =================================================================== --- tcp_graph.c (revision 38117) +++ tcp_graph.c (working copy) @@ -678,6 +678,7 @@ char window_title[WINDOW_TITLE_LENGTH]; struct segment current; struct tcpheader *thdr; + GtkAllocation widget_alloc; debug(DBS_FENTRY) puts ("create_drawing_area()"); #if 0 @@ -760,9 +761,14 @@ gtk_widget_show (g->toplevel); /* in case we didn't get what we asked for */ - g->wp.width = GTK_WIDGET (g->drawing_area)->allocation.width - +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(GTK_WIDGET (g->drawing_area), &widget_alloc); +#else + widget_alloc = GTK_WIDGET (g->drawing_area)->allocation; +#endif + g->wp.width = widget_alloc.width - g->wp.x - RMARGIN_WIDTH; - g->wp.height = GTK_WIDGET (g->drawing_area)->allocation.height - + g->wp.height = widget_alloc.height - g->wp.y - g->x_axis->s.height; g->font = g->drawing_area->style->font_desc; Index: iax2_analysis.c =================================================================== --- iax2_analysis.c (revision 38117) +++ iax2_analysis.c (working copy) @@ -920,6 +920,7 @@ int label_width_mid, label_height_mid; guint32 draw_width, draw_height; char label_string[15]; + GtkAllocation widget_alloc; /* new variables */ guint32 num_time_intervals; @@ -972,12 +973,17 @@ /* * Clear out old plot */ +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(user_data->dlg.dialog_graph.draw_area, &widget_alloc); +#else + widget_alloc = user_data->dlg.dialog_graph.draw_area->allocation; +#endif gdk_draw_rectangle(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.draw_area->style->white_gc, TRUE, 0, 0, - user_data->dlg.dialog_graph.draw_area->allocation.width, - user_data->dlg.dialog_graph.draw_area->allocation.height); + widget_alloc.width, + widget_alloc.height); /* @@ -1349,25 +1355,31 @@ { user_data_t *user_data = data; int i; + GtkAllocation widget_alloc; if(user_data->dlg.dialog_graph.pixmap){ g_object_unref(user_data->dlg.dialog_graph.pixmap); user_data->dlg.dialog_graph.pixmap=NULL; } +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(widget, &widget_alloc); +#else + widget_alloc = widget->allocation; +#endif user_data->dlg.dialog_graph.pixmap=gdk_pixmap_new(widget->window, - widget->allocation.width, - widget->allocation.height, + widget_alloc.width, + widget_alloc.height, -1); - user_data->dlg.dialog_graph.pixmap_width=widget->allocation.width; - user_data->dlg.dialog_graph.pixmap_height=widget->allocation.height; + user_data->dlg.dialog_graph.pixmap_width=widget_alloc.width; + user_data->dlg.dialog_graph.pixmap_height=widget_alloc.height; gdk_draw_rectangle(user_data->dlg.dialog_graph.pixmap, widget->style->white_gc, TRUE, 0, 0, - widget->allocation.width, - widget->allocation.height); + widget_alloc.width, + widget_alloc.height); /* set up the colors and the GC structs for this pixmap */ for(i=0;i<MAX_GRAPHS;i++){ Index: sctp_byte_graph_dlg.c =================================================================== --- sctp_byte_graph_dlg.c (revision 38117) +++ sctp_byte_graph_dlg.c (working copy) @@ -268,6 +268,7 @@ gfloat dis; gboolean write_label = FALSE; PangoLayout *layout; + GtkAllocation widget_alloc; if (u_data->io->x1_tmp_sec == 0 && u_data->io->x1_tmp_usec == 0) u_data->io->offset = 0; @@ -321,9 +322,14 @@ u_data->io->min_y = u_data->io->tmp_min_tsn2; } } +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(u_data->io->draw_area, &widget_alloc); +#else + widget_alloc = u_data->io->draw_area->allocation; +#endif gdk_draw_rectangle(u_data->io->pixmap, u_data->io->draw_area->style->white_gc, - TRUE, 0, 0, u_data->io->draw_area->allocation.width, - u_data->io->draw_area->allocation.height); + TRUE, 0, 0, widget_alloc.width, + widget_alloc.height); distance = 5; /* x_axis */ @@ -572,6 +578,7 @@ static void sctp_graph_redraw(struct sctp_udata *u_data) { sctp_graph_t *ios; + GtkAllocation widget_alloc; u_data->io->needs_redraw = TRUE; @@ -593,6 +600,11 @@ ios=(sctp_graph_t *)g_object_get_data(G_OBJECT(u_data->io->draw_area), "sctp_graph_t"); g_assert(ios != NULL); +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(u_data->io->draw_area, &widget_alloc); +#else + widget_alloc = u_data->io->draw_area->allocation; +#endif gdk_draw_pixmap(u_data->io->draw_area->window, #if GTK_CHECK_VERSION(2,18,0) u_data->io->draw_area->style->fg_gc[gtk_widget_get_state(u_data->io->draw_area)], @@ -602,8 +614,8 @@ ios->pixmap, 0,0, 0, 0, - u_data->io->draw_area->allocation.width, - u_data->io->draw_area->allocation.height); + widget_alloc.width, + widget_alloc.height); } @@ -642,6 +654,7 @@ on_configure_event(GtkWidget *widget, GdkEventConfigure *event _U_, gpointer user_data) { struct sctp_udata *u_data = user_data; + GtkAllocation widget_alloc; g_assert(u_data->io != NULL); @@ -650,19 +663,24 @@ u_data->io->pixmap = NULL; } +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(widget, &widget_alloc); +#else +widget_alloc = widget->allocation; +#endif u_data->io->pixmap = gdk_pixmap_new(widget->window, - widget->allocation.width, - widget->allocation.height, + widget_alloc.width, + widget_alloc.height, -1); - u_data->io->pixmap_width = widget->allocation.width; - u_data->io->pixmap_height = widget->allocation.height; + u_data->io->pixmap_width = widget_alloc.width; + u_data->io->pixmap_height = widget_alloc.height; gdk_draw_rectangle(u_data->io->pixmap, widget->style->white_gc, TRUE, 0, 0, - widget->allocation.width, - widget->allocation.height); + widget_alloc.width, + widget_alloc.height); sctp_graph_redraw(u_data); return TRUE; } @@ -869,6 +887,8 @@ GList *tsnlist=NULL; tsn_t *tsn, *tmptsn; PangoLayout *layout; + GtkAllocation widget_alloc; + g_snprintf(label_string, 15, "%d", 0); memcpy(label_string,(gchar *)g_locale_to_utf8(label_string, -1 , NULL, NULL, NULL), 15); layout = gtk_widget_create_pango_layout(u_data->io->draw_area, label_string); @@ -894,6 +914,12 @@ ios=(sctp_graph_t *)g_object_get_data(G_OBJECT(u_data->io->draw_area), "sctp_graph_t"); g_assert(ios != NULL); +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(u_data->io->draw_area, &widget_alloc); +#else + widget_alloc = u_data->io->draw_area->allocation; +#endif + gdk_draw_pixmap(u_data->io->draw_area->window, #if GTK_CHECK_VERSION(2,18,0) u_data->io->draw_area->style->fg_gc[gtk_widget_get_state(u_data->io->draw_area)], @@ -903,8 +929,8 @@ ios->pixmap, 0, 0, 0, 0, - u_data->io->draw_area->allocation.width, - u_data->io->draw_area->allocation.height); + widget_alloc.width, + widget_alloc.height); x1_tmp=(guint32) floor(u_data->io->min_x+((u_data->io->x_old-LEFT_BORDER-u_data->io->offset)*u_data->io->tmp_width/u_data->io->axis_width)); x2_tmp=(guint32) floor(u_data->io->min_x+((event->x-LEFT_BORDER-u_data->io->offset)*u_data->io->tmp_width/u_data->io->axis_width)); @@ -1026,6 +1052,11 @@ ios=(sctp_graph_t *)g_object_get_data(G_OBJECT(u_data->io->draw_area), "sctp_graph_t"); g_assert(ios != NULL); +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(u_data->io->draw_area, &widget_alloc); +#else + widget_alloc = u_data->io->draw_area->allocation; +#endif gdk_draw_pixmap(u_data->io->draw_area->window, #if GTK_CHECK_VERSION(2,18,0) u_data->io->draw_area->style->fg_gc[gtk_widget_get_state(u_data->io->draw_area)], @@ -1035,8 +1066,8 @@ ios->pixmap, 0, 0, 0, 0, - u_data->io->draw_area->allocation.width, - u_data->io->draw_area->allocation.height); + widget_alloc.width, + widget_alloc.height); } } return TRUE; Index: rtp_analysis.c =================================================================== --- rtp_analysis.c (revision 38117) +++ rtp_analysis.c (working copy) @@ -924,6 +924,7 @@ int label_width_mid, label_height_mid; guint32 draw_width, draw_height; char label_string[15]; + GtkAllocation widget_alloc; /* new variables */ guint32 num_time_intervals; @@ -976,12 +977,17 @@ /* * Clear out old plot */ +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(user_data->dlg.dialog_graph.draw_area, &widget_alloc); +#else + widget_alloc = user_data->dlg.dialog_graph.draw_area->allocation; +#endif gdk_draw_rectangle(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.draw_area->style->white_gc, TRUE, 0, 0, - user_data->dlg.dialog_graph.draw_area->allocation.width, - user_data->dlg.dialog_graph.draw_area->allocation.height); + widget_alloc.width, + widget_alloc.height); /* @@ -1354,6 +1360,7 @@ user_data_t *user_data; int i; GtkWidget *bt_save; + GtkAllocation widget_alloc; user_data=(user_data_t *)g_object_get_data(G_OBJECT(widget), "user_data_t"); @@ -1366,12 +1373,17 @@ user_data->dlg.dialog_graph.pixmap=NULL; } +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(widget, &widget_alloc); +#else + widget_alloc = widget->allocation; +#endif user_data->dlg.dialog_graph.pixmap=gdk_pixmap_new(widget->window, - widget->allocation.width, - widget->allocation.height, + widget_alloc.width, + widget_alloc.height, -1); - user_data->dlg.dialog_graph.pixmap_width=widget->allocation.width; - user_data->dlg.dialog_graph.pixmap_height=widget->allocation.height; + user_data->dlg.dialog_graph.pixmap_width=widget_alloc.width; + user_data->dlg.dialog_graph.pixmap_height=widget_alloc.height; bt_save = g_object_get_data(G_OBJECT(user_data->dlg.dialog_graph.window), "bt_save"); g_object_set_data(G_OBJECT(bt_save), "pixmap", user_data->dlg.dialog_graph.pixmap); @@ -1381,8 +1393,8 @@ widget->style->white_gc, TRUE, 0, 0, - widget->allocation.width, - widget->allocation.height); + widget_alloc.width, + widget_alloc.height); /* set up the colors and the GC structs for this pixmap */ for(i=0;i<MAX_GRAPHS;i++){ Index: sctp_graph_dlg.c =================================================================== --- sctp_graph_dlg.c (revision 38117) +++ sctp_graph_dlg.c (working copy) @@ -555,6 +555,7 @@ gfloat dis; gboolean write_label = FALSE; PangoLayout *layout; + GtkAllocation widget_alloc; if (u_data->io->x1_tmp_sec==0 && u_data->io->x1_tmp_usec==0) u_data->io->offset=0; @@ -609,12 +610,17 @@ } } +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(u_data->io->draw_area, &widget_alloc); +#else + widget_alloc = u_data->io->draw_area->allocation; +#endif gdk_draw_rectangle(u_data->io->pixmap, u_data->io->draw_area->style->white_gc, TRUE, 0, 0, - u_data->io->draw_area->allocation.width, - u_data->io->draw_area->allocation.height); + widget_alloc.width, + widget_alloc.height); distance=5; /* x_axis */ @@ -869,7 +875,8 @@ static void sctp_graph_redraw(struct sctp_udata *u_data) { -sctp_graph_t *ios; + sctp_graph_t *ios; + GtkAllocation widget_alloc; u_data->io->needs_redraw=TRUE; @@ -909,6 +916,11 @@ ios=(sctp_graph_t *)g_object_get_data(G_OBJECT(u_data->io->draw_area), "sctp_graph_t"); g_assert(ios != NULL); +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(u_data->io->draw_area, &widget_alloc); +#else + widget_alloc = u_data->io->draw_area->allocation; +#endif gdk_draw_pixmap(u_data->io->draw_area->window, #if GTK_CHECK_VERSION(2,18,0) u_data->io->draw_area->style->fg_gc[gtk_widget_get_state(u_data->io->draw_area)], @@ -918,8 +930,8 @@ ios->pixmap, 0,0, 0, 0, - u_data->io->draw_area->allocation.width, - u_data->io->draw_area->allocation.height); + widget_alloc.width, + widget_alloc.height); } @@ -964,6 +976,7 @@ configure_event(GtkWidget *widget, GdkEventConfigure *event _U_, gpointer user_data) { struct sctp_udata *u_data = user_data; + GtkAllocation widget_alloc; g_assert(u_data->io != NULL); @@ -972,19 +985,24 @@ u_data->io->pixmap=NULL; } +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(widget, &widget_alloc); +#else + widget_alloc = widget->allocation; +#endif u_data->io->pixmap=gdk_pixmap_new(widget->window, - widget->allocation.width, - widget->allocation.height, + widget_alloc.width, + widget_alloc.height, -1); - u_data->io->pixmap_width=widget->allocation.width; - u_data->io->pixmap_height=widget->allocation.height; + u_data->io->pixmap_width=widget_alloc.width; + u_data->io->pixmap_height=widget_alloc.height; gdk_draw_rectangle(u_data->io->pixmap, widget->style->white_gc, TRUE, 0, 0, - widget->allocation.width, - widget->allocation.height); + widget_alloc.width, + widget_alloc.height); sctp_graph_redraw(u_data); return TRUE; } @@ -1194,6 +1212,7 @@ struct tsn_sort *tsn, *sack=NULL; gboolean sack_found = FALSE; PangoLayout *layout; + GtkAllocation widget_alloc; g_snprintf(label_string, 15, "%d", 0); memcpy(label_string,(gchar *)g_locale_to_utf8(label_string, -1 , NULL, NULL, NULL), 15); @@ -1219,6 +1238,12 @@ g_assert(ios != NULL); +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(u_data->io->draw_area, &widget_alloc); +#else + widget_alloc = u_data->io->draw_area->allocation; +#endif + gdk_draw_pixmap(u_data->io->draw_area->window, #if GTK_CHECK_VERSION(2,18,0) u_data->io->draw_area->style->fg_gc[gtk_widget_get_state(u_data->io->draw_area)], @@ -1228,8 +1253,8 @@ ios->pixmap, 0, 0, 0, 0, - u_data->io->draw_area->allocation.width, - u_data->io->draw_area->allocation.height); + widget_alloc.width, + widget_alloc.height); x1_tmp=(unsigned int)floor(u_data->io->min_x+((u_data->io->x_old-LEFT_BORDER-u_data->io->offset)*u_data->io->tmp_width/u_data->io->axis_width)); x2_tmp=(unsigned int)floor(u_data->io->min_x+((event->x-LEFT_BORDER-u_data->io->offset)*u_data->io->tmp_width/u_data->io->axis_width)); @@ -1377,6 +1402,11 @@ ios=(sctp_graph_t *)g_object_get_data(G_OBJECT(u_data->io->draw_area), "sctp_graph_t"); g_assert(ios != NULL); +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(u_data->io->draw_area, &widget_alloc); +#else + widget_alloc = u_data->io->draw_area->allocation; +#endif gdk_draw_pixmap(u_data->io->draw_area->window, #if GTK_CHECK_VERSION(2,18,0) u_data->io->draw_area->style->fg_gc[gtk_widget_get_state(u_data->io->draw_area)], @@ -1386,8 +1416,8 @@ ios->pixmap, 0, 0, 0, 0, - u_data->io->draw_area->allocation.width, - u_data->io->draw_area->allocation.height); + widget_alloc.width, + widget_alloc.height); } } return TRUE; Index: io_stat.c =================================================================== --- io_stat.c (revision 38117) +++ io_stat.c (working copy) @@ -700,6 +700,7 @@ int label_width, label_height; guint32 draw_width, draw_height; char label_string[45]; + GtkAllocation widget_alloc; /* new variables */ guint32 num_time_intervals; @@ -753,12 +754,17 @@ /* * Clear out old plot */ +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(io->draw_area, &widget_alloc); +#else + widget_alloc = io->draw_area->allocation; +#endif gdk_draw_rectangle(io->pixmap, io->draw_area->style->white_gc, TRUE, 0, 0, - io->draw_area->allocation.width, - io->draw_area->allocation.height); + widget_alloc.width, + widget_alloc.height); /* * Calculate the y scale we should use @@ -1392,18 +1398,24 @@ io_stat_t *io = user_data; int i; GtkWidget *save_bt; + GtkAllocation widget_alloc; if(io->pixmap){ g_object_unref(io->pixmap); io->pixmap=NULL; } +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(widget, &widget_alloc); +#else + widget_alloc = widget->allocation; +#endif io->pixmap=gdk_pixmap_new(widget->window, - widget->allocation.width, - widget->allocation.height, + widget_alloc.width, + widget_alloc.height, -1); - io->pixmap_width=widget->allocation.width; - io->pixmap_height=widget->allocation.height; + io->pixmap_width=widget_alloc.width; + io->pixmap_height=widget_alloc.height; save_bt = g_object_get_data(G_OBJECT(io->window), "save_bt"); g_object_set_data(G_OBJECT(save_bt), "pixmap", io->pixmap); @@ -1413,8 +1425,8 @@ widget->style->white_gc, TRUE, 0, 0, - widget->allocation.width, - widget->allocation.height); + widget_alloc.width, + widget_alloc.height); /* set up the colors and the GC structs for this pixmap */ for(i=0;i<MAX_GRAPHS;i++){ @@ -1647,6 +1659,7 @@ io_stat_t *io = user_data; static gboolean advanced_visible=FALSE; int i; + GtkAllocation widget_alloc; io->count_type = gtk_combo_box_get_active (GTK_COMBO_BOX(item)); @@ -1655,11 +1668,16 @@ disable_graph(&io->graphs[i]); gtk_widget_show(io->graphs[i].advanced_buttons); /* redraw the entire window so the unhidden widgets show up, hopefully */ +#if GTK_CHECK_VERSION(2,18,0) + gtk_widget_get_allocation(io->window, &widget_alloc); +#else + widget_alloc = io->window->allocation; +#endif gtk_widget_queue_draw_area(io->window, 0, 0, - io->window->allocation.width, - io->window->allocation.height); + widget_alloc.width, + widget_alloc.height); } advanced_visible=TRUE; io_stat_redraw(io);
- Follow-Ups:
- Re: [Wireshark-dev] Please review: GSEAL fixes: allocation
- From: Joerg Mayer
- Re: [Wireshark-dev] Please review: GSEAL fixes: allocation
- Prev by Date: Re: [Wireshark-dev] Gtk-Critical messages when dumpcap has insufficient privileges
- Next by Date: Re: [Wireshark-dev] Gtk-Critical messages when dumpcap has insufficient privileges
- Previous by thread: Re: [Wireshark-dev] Gtk-Critical messages when dumpcap has insufficient privileges
- Next by thread: Re: [Wireshark-dev] Please review: GSEAL fixes: allocation
- Index(es):