summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMolly Lloyd <molly@mapbox.com>2018-01-09 14:56:22 -0800
committerMolly Lloyd <molly@mapbox.com>2018-01-18 18:10:09 -0800
commit9fd1acf790f76ffa196f07b04587015609be72e8 (patch)
tree2bb074717bbb0ab37c899f9789ebbca09f2a7c9b
parentc171b61b7d9026e2e9c9d37cfd989d2dde59b8f7 (diff)
downloadqtlocation-mapboxgl-9fd1acf790f76ffa196f07b04587015609be72e8.tar.gz
TileCache::get -> TileCache::pop, add new getter
-rw-r--r--src/mbgl/renderer/tile_pyramid.cpp4
-rw-r--r--src/mbgl/tile/tile_cache.cpp13
-rw-r--r--src/mbgl/tile/tile_cache.hpp3
3 files changed, 15 insertions, 5 deletions
diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp
index 2ff776cb1c..07239b7a1c 100644
--- a/src/mbgl/renderer/tile_pyramid.cpp
+++ b/src/mbgl/renderer/tile_pyramid.cpp
@@ -58,7 +58,7 @@ std::vector<std::reference_wrapper<RenderTile>> TilePyramid::getRenderTiles() {
Tile* TilePyramid::getTile(const OverscaledTileID& tileID){
auto it = tiles.find(tileID);
- return it == tiles.end() ? nullptr : it->second.get();
+ return it == tiles.end() ? cache.get(tileID) : it->second.get();
}
void TilePyramid::update(const std::vector<Immutable<style::Layer::Impl>>& layers,
@@ -152,7 +152,7 @@ void TilePyramid::update(const std::vector<Immutable<style::Layer::Impl>>& layer
if (tileRange && !tileRange->contains(tileID.canonical)) {
return nullptr;
}
- std::unique_ptr<Tile> tile = cache.get(tileID);
+ std::unique_ptr<Tile> tile = cache.pop(tileID);
if (!tile) {
tile = createTile(tileID);
if (tile) {
diff --git a/src/mbgl/tile/tile_cache.cpp b/src/mbgl/tile/tile_cache.cpp
index 3fafb1259c..13154ba4c1 100644
--- a/src/mbgl/tile/tile_cache.cpp
+++ b/src/mbgl/tile/tile_cache.cpp
@@ -33,13 +33,22 @@ void TileCache::add(const OverscaledTileID& key, std::unique_ptr<Tile> tile) {
// purge oldest key/tile if necessary
if (orderedKeys.size() > size) {
- get(orderedKeys.front());
+ pop(orderedKeys.front());
}
assert(orderedKeys.size() <= size);
}
-std::unique_ptr<Tile> TileCache::get(const OverscaledTileID& key) {
+Tile* TileCache::get(const OverscaledTileID& key) {
+ auto it = tiles.find(key);
+ if (it != tiles.end()) {
+ return std::move(it->second.get());
+ } else {
+ return nullptr;
+ }
+}
+
+std::unique_ptr<Tile> TileCache::pop(const OverscaledTileID& key) {
std::unique_ptr<Tile> tile;
diff --git a/src/mbgl/tile/tile_cache.hpp b/src/mbgl/tile/tile_cache.hpp
index 80fe98a20c..88358b8cdc 100644
--- a/src/mbgl/tile/tile_cache.hpp
+++ b/src/mbgl/tile/tile_cache.hpp
@@ -17,7 +17,8 @@ public:
void setSize(size_t);
size_t getSize() const { return size; };
void add(const OverscaledTileID& key, std::unique_ptr<Tile> data);
- std::unique_ptr<Tile> get(const OverscaledTileID& key);
+ std::unique_ptr<Tile> pop(const OverscaledTileID& key);
+ Tile* get(const OverscaledTileID& key);
bool has(const OverscaledTileID& key);
void clear();