Author: cazfi Date: Fri Feb 20 23:49:47 2015 New Revision: 28245 URL: http://svn.gna.org/viewcvs/freeciv?rev=28245&view=rev Log: Do not try to redraw science dialog while tileset change is ongoing and there's no guarantee that all the sprites are available.
See bug #22625 Modified: branches/S2_4/client/gui-gtk-2.0/repodlgs.c branches/S2_4/client/gui-gtk-3.0/repodlgs.c branches/S2_4/client/reqtree.c branches/S2_4/client/tilespec.c branches/S2_4/client/tilespec.h Modified: branches/S2_4/client/gui-gtk-2.0/repodlgs.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_4/client/gui-gtk-2.0/repodlgs.c?rev=28245&r1=28244&r2=28245&view=diff ============================================================================== --- branches/S2_4/client/gui-gtk-2.0/repodlgs.c (original) +++ branches/S2_4/client/gui-gtk-2.0/repodlgs.c Fri Feb 20 23:49:47 2015 @@ -234,6 +234,10 @@ }; struct reqtree *reqtree = g_object_get_data(G_OBJECT(widget), "reqtree"); int width, height; + + if (!tileset_is_fully_loaded()) { + return; + } get_reqtree_dimensions(reqtree, &width, &height); draw_reqtree(reqtree, &canvas, 0, 0, 0, 0, width, height); Modified: branches/S2_4/client/gui-gtk-3.0/repodlgs.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_4/client/gui-gtk-3.0/repodlgs.c?rev=28245&r1=28244&r2=28245&view=diff ============================================================================== --- branches/S2_4/client/gui-gtk-3.0/repodlgs.c (original) +++ branches/S2_4/client/gui-gtk-3.0/repodlgs.c Fri Feb 20 23:49:47 2015 @@ -236,6 +236,10 @@ GtkAdjustment *vadjustment; gint hadjustment_value; gint vadjustment_value; + + if (!tileset_is_fully_loaded()) { + return TRUE; + } hadjustment = gtk_scrollable_get_hadjustment(GTK_SCROLLABLE(widget)); vadjustment = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(widget)); Modified: branches/S2_4/client/reqtree.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_4/client/reqtree.c?rev=28245&r1=28244&r2=28245&view=diff ============================================================================== --- branches/S2_4/client/reqtree.c (original) +++ branches/S2_4/client/reqtree.c Fri Feb 20 23:49:47 2015 @@ -1069,7 +1069,7 @@ * node_rectangle_minimum_size(). If you change something here, * change also node_rectangle_minimum_size(). */ - + get_text_size(&text_w, &text_h, FONT_REQTREE_TEXT, text); canvas_put_text(pcanvas, Modified: branches/S2_4/client/tilespec.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_4/client/tilespec.c?rev=28245&r1=28244&r2=28245&view=diff ============================================================================== --- branches/S2_4/client/tilespec.c (original) +++ branches/S2_4/client/tilespec.c Fri Feb 20 23:49:47 2015 @@ -505,6 +505,8 @@ int focus_unit_state = 0; +static bool tileset_update = FALSE; + static int fill_unit_type_sprite_array(const struct tileset *t, struct drawn_sprite *sprs, @@ -1150,7 +1152,9 @@ const char *tileset_name = option_str_get(poption); fc_assert_ret(NULL != tileset_name && tileset_name[0] != '\0'); + tileset_update = TRUE; tilespec_reread(tileset_name, TRUE); + tileset_update = FALSE; menus_init(); } @@ -5710,3 +5714,11 @@ t->sprites.background.graphic = NULL; } } + +/**************************************************************************** + Is tileset in sane state? +****************************************************************************/ +bool tileset_is_fully_loaded(void) +{ + return !tileset_update; +} Modified: branches/S2_4/client/tilespec.h URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_4/client/tilespec.h?rev=28245&r1=28244&r2=28245&view=diff ============================================================================== --- branches/S2_4/client/tilespec.h (original) +++ branches/S2_4/client/tilespec.h Fri Feb 20 23:49:47 2015 @@ -134,6 +134,7 @@ void tileset_free(struct tileset *tileset); void tileset_load_tiles(struct tileset *t); void tileset_free_tiles(struct tileset *t); +bool tileset_is_fully_loaded(void); void finish_loading_sprites(struct tileset *t); _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits