Author: cazfi Date: Fri Jun 24 13:58:12 2016 New Revision: 33014 URL: http://svn.gna.org/viewcvs/freeciv?rev=33014&view=rev Log: Use gtk_image_new_from_surface() where possible instead of constructin temporary GtkPixbuf in gtk3-client.
See patch #7304 Modified: trunk/client/gui-gtk-3.0/citydlg.c trunk/client/gui-gtk-3.0/diplodlg.c trunk/client/gui-gtk-3.0/gui_main.c trunk/client/gui-gtk-3.0/happiness.c trunk/client/gui-gtk-3.0/helpdlg.c trunk/client/gui-gtk-3.0/mapview.c Modified: trunk/client/gui-gtk-3.0/citydlg.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/citydlg.c?rev=33014&r1=33013&r2=33014&view=diff ============================================================================== --- trunk/client/gui-gtk-3.0/citydlg.c (original) +++ trunk/client/gui-gtk-3.0/citydlg.c Fri Jun 24 13:58:12 2016 @@ -1482,7 +1482,6 @@ GtkWidget *vbox, *hbox, *cbox, *ebox; int citizen_bar_width; int citizen_bar_height; - GdkPixbuf *pb; if (!city_dialogs_have_been_initialised) { initialize_city_dialogs(); @@ -1550,9 +1549,7 @@ pdialog->citizen_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, citizen_bar_width, citizen_bar_height); - pb = surface_get_pixbuf(pdialog->citizen_surface, citizen_bar_width, citizen_bar_height); - pdialog->citizen_images = gtk_image_new_from_pixbuf(pb); - g_object_unref(pb); + pdialog->citizen_images = gtk_image_new_from_surface(pdialog->citizen_surface); gtk_widget_add_events(pdialog->citizen_images, GDK_BUTTON_PRESS_MASK); gtk_widget_set_margin_left(pdialog->citizen_images, 2); @@ -1704,11 +1701,9 @@ { enum citizen_category categories[MAX_CITY_SIZE]; int i, width; - int citizen_bar_width; int citizen_bar_height; struct city *pcity = pdialog->pcity; int num_citizens = get_city_citizen_types(pcity, FEELING_FINAL, categories); - GdkPixbuf *pb; cairo_t *cr; /* If there is not enough space we stack the icons. We draw from left to */ @@ -1726,7 +1721,6 @@ pdialog->cwidth = width; /* overview page */ - citizen_bar_width = (num_citizens - 1) * width + tileset_small_sprite_width(tileset) + 2; citizen_bar_height = tileset_small_sprite_height(tileset); cr = cairo_create(pdialog->citizen_surface); @@ -1740,10 +1734,6 @@ } cairo_destroy(cr); - - pb = surface_get_pixbuf(pdialog->citizen_surface, citizen_bar_width, citizen_bar_height); - gtk_image_set_from_pixbuf(GTK_IMAGE(pdialog->citizen_images), pb); - g_object_unref(pb); } /**************************************************************** Modified: trunk/client/gui-gtk-3.0/diplodlg.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/diplodlg.c?rev=33014&r1=33013&r2=33014&view=diff ============================================================================== --- trunk/client/gui-gtk-3.0/diplodlg.c (original) +++ trunk/client/gui-gtk-3.0/diplodlg.c Fri Jun 24 13:58:12 2016 @@ -628,7 +628,6 @@ GtkWidget *label, *sw, *view, *image, *spin; GtkWidget *menubar, *menuitem, *menu, *notebook; struct sprite *flag_spr; - GdkPixbuf *pb; GtkListStore *store; GtkCellRenderer *rend; int i; @@ -712,9 +711,7 @@ /* Our flag */ flag_spr = get_nation_flag_sprite(tileset, nation_of_player(plr0)); - pb = sprite_get_pixbuf(flag_spr); - image = gtk_image_new_from_pixbuf(pb); - g_object_unref(pb); + image = gtk_image_new_from_surface(flag_spr->surface); gtk_container_add(GTK_CONTAINER(hbox), image); /* Our name. */ @@ -799,9 +796,7 @@ /* Their flag */ flag_spr = get_nation_flag_sprite(tileset, nation_of_player(plr1)); - pb = sprite_get_pixbuf(flag_spr); - image = gtk_image_new_from_pixbuf(pb); - g_object_unref(pb); + image = gtk_image_new_from_surface(flag_spr->surface); gtk_container_add(GTK_CONTAINER(hbox), image); /* Their name. */ Modified: trunk/client/gui-gtk-3.0/gui_main.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/gui_main.c?rev=33014&r1=33013&r2=33014&view=diff ============================================================================== --- trunk/client/gui-gtk-3.0/gui_main.c (original) +++ trunk/client/gui-gtk-3.0/gui_main.c Fri Jun 24 13:58:12 2016 @@ -1092,9 +1092,9 @@ GtkWidget *button, *view, *vgrid, *right_vbox = NULL; int i; char buf[256]; + struct sprite *spr; GtkWidget *notebook, *statusbar; GtkWidget *dtach_lowbox = NULL; - GdkPixbuf *pb; message_buffer = gtk_text_buffer_new(NULL); @@ -1269,8 +1269,6 @@ gtk_container_add(GTK_CONTAINER(ebox), table2); for (i = 0; i < 10; i++) { - struct sprite *spr; - ebox = gtk_event_box_new(); gtk_event_box_set_visible_window(GTK_EVENT_BOX(ebox), FALSE); gtk_widget_add_events(ebox, GDK_BUTTON_PRESS_MASK); @@ -1281,25 +1279,27 @@ G_CALLBACK(taxrates_callback), GINT_TO_POINTER(i)); spr = i < 5 ? get_tax_sprite(tileset, O_SCIENCE) : get_tax_sprite(tileset, O_GOLD); - pb = sprite_get_pixbuf(spr); - econ_label[i] = gtk_image_new_from_pixbuf(pb); - g_object_unref(pb); + econ_label[i] = gtk_image_new_from_surface(spr->surface); gtk_container_add(GTK_CONTAINER(ebox), econ_label[i]); } /* science, environmental, govt, timeout */ - pb = sprite_get_pixbuf(client_research_sprite()); - bulb_label = gtk_image_new_from_pixbuf(pb); - g_object_unref(pb); - pb = sprite_get_pixbuf(client_warming_sprite()); - sun_label = gtk_image_new_from_pixbuf(pb); - g_object_unref(pb); - pb = sprite_get_pixbuf(client_cooling_sprite()); - flake_label = gtk_image_new_from_pixbuf(pb); - g_object_unref(pb); - pb = sprite_get_pixbuf(client_government_sprite()); - government_label = gtk_image_new_from_pixbuf(pb); - g_object_unref(pb); + spr = client_research_sprite(); + if (spr != NULL) { + bulb_label = gtk_image_new_from_surface(spr->surface); + } + spr = client_warming_sprite(); + if (spr != NULL) { + sun_label = gtk_image_new_from_surface(spr->surface); + } + spr = client_cooling_sprite(); + if (spr != NULL) { + flake_label = gtk_image_new_from_surface(spr->surface); + } + spr = client_government_sprite(); + if (spr != NULL) { + government_label = gtk_image_new_from_surface(spr->surface); + } for (i = 0; i < 4; i++) { GtkWidget *w; Modified: trunk/client/gui-gtk-3.0/happiness.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/happiness.c?rev=33014&r1=33013&r2=33014&view=diff ============================================================================== --- trunk/client/gui-gtk-3.0/happiness.c (original) +++ trunk/client/gui-gtk-3.0/happiness.c Fri Jun 24 13:58:12 2016 @@ -54,7 +54,6 @@ GtkWidget *shell; GtkWidget *cityname_label; cairo_surface_t *feeling_surfaces[NUM_HAPPINESS_MODIFIERS]; - GtkWidget *feeling_images[NUM_HAPPINESS_MODIFIERS]; GtkWidget *happiness_ebox[NUM_HAPPINESS_MODIFIERS]; GtkWidget *happiness_label[NUM_HAPPINESS_MODIFIERS]; GtkWidget *close; @@ -226,7 +225,7 @@ gtk_container_add(GTK_CONTAINER(pdialog->cityname_label), table); for (i = 0; i < NUM_HAPPINESS_MODIFIERS; i++) { - GdkPixbuf *pb; + GtkWidget *img; /* set spacing between lines of citizens*/ @@ -250,12 +249,10 @@ pdialog->feeling_surfaces[i] = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, FEELING_WIDTH, FEELING_HEIGHT); - pb = surface_get_pixbuf(pdialog->feeling_surfaces[i], FEELING_WIDTH, FEELING_HEIGHT); - pdialog->feeling_images[i] = gtk_image_new_from_pixbuf(pb); - g_object_unref(pb); - gtk_container_add(GTK_CONTAINER(ebox), pdialog->feeling_images[i]); - gtk_widget_set_halign(pdialog->feeling_images[i], GTK_ALIGN_START); - gtk_widget_set_valign(pdialog->feeling_images[i], GTK_ALIGN_START); + img = gtk_image_new_from_surface(pdialog->feeling_surfaces[i]); + gtk_container_add(GTK_CONTAINER(ebox), img); + gtk_widget_set_halign(img, GTK_ALIGN_START); + gtk_widget_set_valign(img, GTK_ALIGN_START); gtk_grid_attach(GTK_GRID(table), ebox, 1, i, 1, 1); } @@ -309,13 +306,7 @@ struct happiness_dialog *pdialog = get_happiness_dialog(pcity); for (i = 0; i < FEELING_LAST; i++) { - GdkPixbuf *pb; - refresh_feeling_surface(pdialog->feeling_surfaces[i], pdialog->pcity, i); - - pb = surface_get_pixbuf(pdialog->feeling_surfaces[i], FEELING_WIDTH, FEELING_HEIGHT); - gtk_image_set_from_pixbuf(GTK_IMAGE(pdialog->feeling_images[i]), pb); - g_object_unref(pb); } } Modified: trunk/client/gui-gtk-3.0/helpdlg.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/helpdlg.c?rev=33014&r1=33013&r2=33014&view=diff ============================================================================== --- trunk/client/gui-gtk-3.0/helpdlg.c (original) +++ trunk/client/gui-gtk-3.0/helpdlg.c Fri Jun 24 13:58:12 2016 @@ -744,14 +744,11 @@ **************************************************************************/ static void set_help_tile_from_sprite(struct sprite *spr) { - GdkPixbuf *pix; - if (spr == NULL) { return; } - pix = sprite_get_pixbuf(spr); - gtk_image_set_from_pixbuf(GTK_IMAGE(help_tile), pix); + gtk_image_set_from_surface(GTK_IMAGE(help_tile), spr->surface); gtk_widget_show(help_tile); } Modified: trunk/client/gui-gtk-3.0/mapview.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/mapview.c?rev=33014&r1=33013&r2=33014&view=diff ============================================================================== --- trunk/client/gui-gtk-3.0/mapview.c (original) +++ trunk/client/gui-gtk-3.0/mapview.c Fri Jun 24 13:58:12 2016 @@ -164,30 +164,21 @@ for (; d < client.conn.playing->economic.luxury /10; d++) { struct sprite *spr = get_tax_sprite(tileset, O_LUXURY); - GdkPixbuf *pb; - - pb = sprite_get_pixbuf(spr); - gtk_image_set_from_pixbuf(GTK_IMAGE(econ_label[d]), pb); - g_object_unref(pb); + + gtk_image_set_from_surface(GTK_IMAGE(econ_label[d]), spr->surface); } for (; d < (client.conn.playing->economic.science + client.conn.playing->economic.luxury) / 10; d++) { struct sprite *spr = get_tax_sprite(tileset, O_SCIENCE); - GdkPixbuf *pb; - - pb = sprite_get_pixbuf(spr); - gtk_image_set_from_pixbuf(GTK_IMAGE(econ_label[d]), pb); - g_object_unref(pb); + + gtk_image_set_from_surface(GTK_IMAGE(econ_label[d]), spr->surface); } for (; d < 10; d++) { struct sprite *spr = get_tax_sprite(tileset, O_GOLD); - GdkPixbuf *pb; - - pb = sprite_get_pixbuf(spr); - gtk_image_set_from_pixbuf(GTK_IMAGE(econ_label[d]), pb); - g_object_unref(pb); + + gtk_image_set_from_surface(GTK_IMAGE(econ_label[d]), spr->surface); } } @@ -281,20 +272,10 @@ void set_indicator_icons(struct sprite *bulb, struct sprite *sol, struct sprite *flake, struct sprite *gov) { - GdkPixbuf *pb; - - pb = sprite_get_pixbuf(bulb); - gtk_image_set_from_pixbuf(GTK_IMAGE(bulb_label), pb); - g_object_unref(pb); - pb = sprite_get_pixbuf(sol); - gtk_image_set_from_pixbuf(GTK_IMAGE(sun_label), pb); - g_object_unref(pb); - pb = sprite_get_pixbuf(flake); - gtk_image_set_from_pixbuf(GTK_IMAGE(flake_label), pb); - g_object_unref(pb); - pb = sprite_get_pixbuf(gov); - gtk_image_set_from_pixbuf(GTK_IMAGE(government_label), pb); - g_object_unref(pb); + gtk_image_set_from_surface(GTK_IMAGE(bulb_label), bulb->surface); + gtk_image_set_from_surface(GTK_IMAGE(sun_label), sol->surface); + gtk_image_set_from_surface(GTK_IMAGE(flake_label), flake->surface); + gtk_image_set_from_surface(GTK_IMAGE(government_label), gov->surface); } /**************************************************************************** @@ -506,7 +487,6 @@ int *upkeep_cost, int happy_cost) { struct canvas store = FC_STATIC_CANVAS_INIT; - GdkPixbuf *pb; int width = tileset_full_tile_width(tileset); store.surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, @@ -517,9 +497,7 @@ put_unit_city_overlays(punit, &store, 0, tileset_unit_layout_offset_y(tileset), upkeep_cost, happy_cost); - pb = surface_get_pixbuf(store.surface, width, height); - gtk_image_set_from_pixbuf(p, pb); - g_object_unref(pb); + gtk_image_set_from_surface(p, store.surface); cairo_surface_destroy(store.surface); } _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits