-// newcache.hxx -- routines to handle scenery tile caching
+// TileCache.hxx -- routines to handle scenery tile caching
//
// Written by Curtis Olson, started December 2000.
//
#include <map>
#include <simgear/bucket/newbucket.hxx>
-#include <simgear/math/point3d.hxx>
#include <simgear/scene/tgdb/TileEntry.hxx>
using std::map;
// pointers to allow an external linear traversal of cache entries
tile_map_iterator current;
+ double current_time;
+
// Free a tile cache entry
void entry_free( long cache_index );
- double current_time;
-
public:
tile_map_iterator begin() { return tile_cache.begin(); }
tile_map_iterator end() { return tile_cache.end(); }
// Check if the specified "bucket" exists in the cache
bool exists( const SGBucket& b ) const;
- // Return the index of the oldest tile in the cache, return -1 if
+ // Return the index of a tile to be dropped from the cache, return -1 if
// nothing available to be removed.
- long get_oldest_tile();
-
- // Clear the inner ring flag for all tiles in the cache so that
- // the external tile scheduler can flag the inner ring correctly.
- void clear_inner_ring_flags();
+ long get_drop_tile();
+
+ // Clear all flags indicating tiles belonging to the current view
+ void clear_current_view();
// Clear a cache entry, note that the cache only holds pointers
// and this does not free the object which is pointed to.
void clear_entry( long cache_entry );
+ // Refresh/reload a tile when it's already in memory.
+ void refresh_tile(long tile_index);
+
// Clear all completely loaded tiles (ignores partially loaded tiles)
void clear_cache();
void set_current_time(double val) { current_time = val; }
double get_current_time() const { return current_time; }
+
+ // update tile's priority and expiry time according to current request
+ void request_tile(TileEntry* t,float priority,bool current_view,double requesttime);
};
}