fixes #1308: normalize tile memory cache keys & allow dupe inserts
This commit is contained in:
committed by
John Firebaugh
parent
55118e5bd7
commit
b43ba4089c
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user