Author: cazfi
Date: Fri Feb 20 23:49:22 2015
New Revision: 28243

URL: http://svn.gna.org/viewcvs/freeciv?rev=28243&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_6/client/gui-gtk-2.0/repodlgs.c
    branches/S2_6/client/gui-gtk-3.0/repodlgs.c
    branches/S2_6/client/reqtree.c
    branches/S2_6/client/tilespec.c
    branches/S2_6/client/tilespec.h

Modified: branches/S2_6/client/gui-gtk-2.0/repodlgs.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-gtk-2.0/repodlgs.c?rev=28243&r1=28242&r2=28243&view=diff
==============================================================================
--- branches/S2_6/client/gui-gtk-2.0/repodlgs.c (original)
+++ branches/S2_6/client/gui-gtk-2.0/repodlgs.c Fri Feb 20 23:49:22 2015
@@ -238,6 +238,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_6/client/gui-gtk-3.0/repodlgs.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-gtk-3.0/repodlgs.c?rev=28243&r1=28242&r2=28243&view=diff
==============================================================================
--- branches/S2_6/client/gui-gtk-3.0/repodlgs.c (original)
+++ branches/S2_6/client/gui-gtk-3.0/repodlgs.c Fri Feb 20 23:49:22 2015
@@ -241,6 +241,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_6/client/reqtree.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/reqtree.c?rev=28243&r1=28242&r2=28243&view=diff
==============================================================================
--- branches/S2_6/client/reqtree.c      (original)
+++ branches/S2_6/client/reqtree.c      Fri Feb 20 23:49:22 2015
@@ -1070,7 +1070,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_6/client/tilespec.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/tilespec.c?rev=28243&r1=28242&r2=28243&view=diff
==============================================================================
--- branches/S2_6/client/tilespec.c     (original)
+++ branches/S2_6/client/tilespec.c     Fri Feb 20 23:49:22 2015
@@ -519,6 +519,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,
@@ -1219,7 +1221,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, client.conn.established);
+  tileset_update = FALSE;
   menus_init();
 }
 
@@ -6308,3 +6312,11 @@
     }
   }
 }
+
+/****************************************************************************
+  Is tileset in sane state?
+****************************************************************************/
+bool tileset_is_fully_loaded(void)
+{
+  return !tileset_update;
+}

Modified: branches/S2_6/client/tilespec.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/tilespec.h?rev=28243&r1=28242&r2=28243&view=diff
==============================================================================
--- branches/S2_6/client/tilespec.h     (original)
+++ branches/S2_6/client/tilespec.h     Fri Feb 20 23:49:22 2015
@@ -180,6 +180,7 @@
 void tileset_load_tiles(struct tileset *t);
 void tileset_free_tiles(struct tileset *t);
 void tileset_ruleset_reset(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

Reply via email to