summaryrefslogtreecommitdiff
path: root/src/mbgl/tile/tile_cache.cpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-05-10 11:48:22 +0200
committerKonstantin Käfer <mail@kkaefer.com>2016-05-10 14:50:56 +0200
commit7332ae00735a7cb1a0a4528d48e5956aa593b8b8 (patch)
tree5d680f5388c2019834975a22cd941d0cefb59a31 /src/mbgl/tile/tile_cache.cpp
parentec70125e41e4e9db5f1d0941c0129d80f5792896 (diff)
downloadqtlocation-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.cpp13
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());