diff options
author | Molly Lloyd <molly@mapbox.com> | 2018-01-09 14:56:22 -0800 |
---|---|---|
committer | Molly Lloyd <molly@mapbox.com> | 2018-01-18 18:10:09 -0800 |
commit | 9fd1acf790f76ffa196f07b04587015609be72e8 (patch) | |
tree | 2bb074717bbb0ab37c899f9789ebbca09f2a7c9b | |
parent | c171b61b7d9026e2e9c9d37cfd989d2dde59b8f7 (diff) | |
download | qtlocation-mapboxgl-9fd1acf790f76ffa196f07b04587015609be72e8.tar.gz |
TileCache::get -> TileCache::pop, add new getter
-rw-r--r-- | src/mbgl/renderer/tile_pyramid.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/tile/tile_cache.cpp | 13 | ||||
-rw-r--r-- | src/mbgl/tile/tile_cache.hpp | 3 |
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(); |