diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-05-10 11:48:22 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-05-10 14:50:56 +0200 |
commit | 7332ae00735a7cb1a0a4528d48e5956aa593b8b8 (patch) | |
tree | 5d680f5388c2019834975a22cd941d0cefb59a31 /src/mbgl/tile/tile_cache.cpp | |
parent | ec70125e41e4e9db5f1d0941c0129d80f5792896 (diff) | |
download | qtlocation-mapboxgl-7332ae00735a7cb1a0a4528d48e5956aa593b8b8.tar.gz |
[core] retain tiles differently and remove old TileID class
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()); |