]> git.mxchange.org Git - flightgear.git/commitdiff
Fixed a bug in tilecache size which caused occasional tiles to drop out
authorcurt <curt>
Mon, 14 Jun 1999 13:47:44 +0000 (13:47 +0000)
committercurt <curt>
Mon, 14 Jun 1999 13:47:44 +0000 (13:47 +0000)
when more than one row is scheduled "simultaneously".

Simulator/Scenery/tilecache.cxx

index 6e4acb4d20a7ded2bc29ee67ad3db1a276c3543f..67ef6deecd15b1392168f384fc5fa5dfa9102537 100644 (file)
@@ -67,8 +67,8 @@ FGTileCache::init( void )
     // 
     //   target_cache_size >= (current.options.tile_diameter + 1) ** 2 
     // 
-    int side = current_options.get_tile_diameter() + 1;
-    int target_cache_size = side * side;
+    int side = current_options.get_tile_diameter() + 2;
+    int target_cache_size = (side*side);
     FG_LOG( FG_TERRAIN, FG_DEBUG, "  target cache size = " 
            << target_cache_size );
     FG_LOG( FG_TERRAIN, FG_DEBUG, "  current cache size = " 
@@ -166,12 +166,17 @@ FGTileCache::next_avail( void )
     int max_index;
     
     max_dist = 0.0;
-    max_index = 0;
+    max_index = -1;
 
     for ( i = 0; i < (int)tile_cache.size(); i++ ) {
+       // only look at freeing NON-scheduled (i.e. ready to load
+       // cache entries.  This assumes that the cache is always big
+       // enough for our tile radius!
+
        if ( tile_cache[i].is_unused() ) {
+           // favor unused cache slots
            return(i);
-       } else {
+       } else if ( tile_cache[i].is_loaded() ) {
            // calculate approximate distance from view point
            abs_view_pos = current_view.get_abs_view_pos();