fixes #1308: normalize tile memory cache keys & allow dupe inserts

This commit is contained in:
Justin R. Miller
2015-04-22 00:20:03 -07:00
committed by John Firebaugh
parent 55118e5bd7
commit b43ba4089c
2 changed files with 10 additions and 5 deletions

View File

@@ -20,11 +20,16 @@ void TileCache::setSize(size_t size_) {
void TileCache::add(uint64_t key, std::shared_ptr<TileData> data) {
assert(tiles.find(key) == tiles.end());
// insert new or query existing data
if (tiles.emplace(key, data).second) {
// remove existing data key
orderedKeys.remove(key);
}
tiles.emplace(key, data);
// (re-)insert data key as newest
orderedKeys.push_back(key);
// purge oldest key/data if necessary
if (orderedKeys.size() > size) {
get(orderedKeys.front());
}