From dbf16440a6ae8dedc408d8345e1527a516a42a1d Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 6 Jun 2016 17:06:51 -0700 Subject: [PATCH] [core] Eliminate Source dependency on TileSource --- src/mbgl/style/source.cpp | 7 +++---- src/mbgl/tile/tile_data.cpp | 4 ++++ src/mbgl/tile/tile_data.hpp | 10 ++++++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp index 7e012727d..d7752ed37 100644 --- a/src/mbgl/style/source.cpp +++ b/src/mbgl/style/source.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include #include #include @@ -244,8 +243,8 @@ bool Source::update(const UpdateParameters& parameters) { auto retainTileDataFn = [&retain](TileData& tileData, bool required) -> void { retain.emplace(tileData.id); - tileData.getTileSource()->setNecessity(required ? TileSource::Necessity::Required - : TileSource::Necessity::Optional); + tileData.setNecessity(required ? TileData::Necessity::Required + : TileData::Necessity::Optional); }; auto getTileDataFn = [this](const OverscaledTileID& dataTileID) -> TileData* { return getTileData(dataTileID); @@ -288,7 +287,7 @@ bool Source::update(const UpdateParameters& parameters) { auto retainIt = retain.begin(); while (dataIt != tileDataMap.end()) { if (retainIt == retain.end() || dataIt->first < *retainIt) { - dataIt->second->getTileSource()->setNecessity(TileSource::Necessity::Optional); + dataIt->second->setNecessity(TileData::Necessity::Optional); cache.add(dataIt->first, std::move(dataIt->second)); tileDataMap.erase(dataIt++); } else { diff --git a/src/mbgl/tile/tile_data.cpp b/src/mbgl/tile/tile_data.cpp index a64de4d1e..19ff48a89 100644 --- a/src/mbgl/tile/tile_data.cpp +++ b/src/mbgl/tile/tile_data.cpp @@ -24,6 +24,10 @@ void TileData::setTileSource(std::unique_ptr tileSource_) { tileSource = std::move(tileSource_); } +void TileData::setNecessity(Necessity necessity) { + tileSource->setNecessity(static_cast(necessity)); +} + void TileData::setTriedOptional() { triedOptional = true; observer->onNeedsRepaint(); diff --git a/src/mbgl/tile/tile_data.hpp b/src/mbgl/tile/tile_data.hpp index d22e87118..9dd44b037 100644 --- a/src/mbgl/tile/tile_data.hpp +++ b/src/mbgl/tile/tile_data.hpp @@ -32,8 +32,13 @@ public: virtual ~TileData(); void setObserver(TileDataObserver* observer); - void setTileSource(std::unique_ptr); - TileSource* getTileSource() { return tileSource.get(); } + + enum class Necessity : bool { + Optional = false, + Required = true, + }; + + void setNecessity(Necessity); // Mark this tile as no longer needed and cancel any pending work. virtual void cancel() = 0; @@ -99,6 +104,7 @@ protected: DataAvailability availableData = DataAvailability::None; + void setTileSource(std::unique_ptr); std::unique_ptr tileSource; TileDataObserver* observer = nullptr;