diff options
Diffstat (limited to 'src/mbgl/tile/tile_cache.cpp')
-rw-r--r-- | src/mbgl/tile/tile_cache.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/mbgl/tile/tile_cache.cpp b/src/mbgl/tile/tile_cache.cpp index 0f0a231d54..15e8a38ce5 100644 --- a/src/mbgl/tile/tile_cache.cpp +++ b/src/mbgl/tile/tile_cache.cpp @@ -17,10 +17,13 @@ void TileCache::setSize(size_t size_) { assert(orderedKeys.size() <= size); } -void TileCache::add(const OverscaledTileID& key, std::shared_ptr<TileData> data) { +void TileCache::add(const OverscaledTileID& key, std::unique_ptr<TileData> data) { + if (!data->isReady() || !size) { + return; + } // insert new or query existing data - if (tiles.emplace(key, data).second) { + if (tiles.emplace(key, std::move(data)).second) { // remove existing data key orderedKeys.remove(key); } @@ -36,13 +39,13 @@ void TileCache::add(const OverscaledTileID& key, std::shared_ptr<TileData> data) assert(orderedKeys.size() <= size); }; -std::shared_ptr<TileData> TileCache::get(const OverscaledTileID& key) { +std::unique_ptr<TileData> TileCache::get(const OverscaledTileID& key) { - std::shared_ptr<TileData> data; + std::unique_ptr<TileData> data; auto it = tiles.find(key); if (it != tiles.end()) { - data = it->second; + data = std::move(it->second); tiles.erase(it); orderedKeys.remove(key); assert(data->isReady()); |