summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2017-07-27 21:12:38 +0200
committerKonstantin Käfer <mail@kkaefer.com>2017-07-27 21:12:38 +0200
commit54ca0c357bf522cb01fa3ee2f1131aac9b9c0cc0 (patch)
tree37094c77bcd5492f882ce50467f61d491187d498
parent9af44b75120ad079ec7a15498b6213c5baae52da (diff)
downloadqtlocation-mapboxgl-54ca0c357bf522cb01fa3ee2f1131aac9b9c0cc0.tar.gz
[core] make sure that 304 Not Modified requests correctly update tile state
-rw-r--r--src/mbgl/tile/raster_tile.cpp14
-rw-r--r--src/mbgl/tile/raster_tile.hpp2
-rw-r--r--src/mbgl/tile/vector_tile.cpp6
-rw-r--r--src/mbgl/tile/vector_tile.hpp6
4 files changed, 16 insertions, 12 deletions
diff --git a/src/mbgl/tile/raster_tile.cpp b/src/mbgl/tile/raster_tile.cpp
index 5906b0f6a0..be78a9988b 100644
--- a/src/mbgl/tile/raster_tile.cpp
+++ b/src/mbgl/tile/raster_tile.cpp
@@ -36,17 +36,19 @@ void RasterTile::setError(std::exception_ptr err, const bool complete) {
}
// Called when new data is available for this tile. It can be called even if there is already data
-// in this tile.
-void RasterTile::setData(std::shared_ptr<const std::string> data,
- const optional<Timestamp> modified_,
- const optional<Timestamp> expires_,
+// in this tile. When the existing data should remain the same, the optional data field is empty.
+void RasterTile::setData(optional<std::shared_ptr<const std::string>> data,
+ optional<Timestamp> modified_,
+ optional<Timestamp> expires_,
const bool complete) {
(void)complete;
modified = modified_;
expires = expires_;
- ++correlationID;
- worker.invoke(&RasterTileWorker::parse, data, correlationID);
+ if (data) {
+ ++correlationID;
+ worker.invoke(&RasterTileWorker::parse, *data, correlationID);
+ }
}
// Invoked once the worker thread finished parsing the image.
diff --git a/src/mbgl/tile/raster_tile.hpp b/src/mbgl/tile/raster_tile.hpp
index b92637b711..f5f6ea944c 100644
--- a/src/mbgl/tile/raster_tile.hpp
+++ b/src/mbgl/tile/raster_tile.hpp
@@ -25,7 +25,7 @@ public:
void setNecessity(Necessity) final;
void setError(std::exception_ptr, bool complete);
- void setData(std::shared_ptr<const std::string> data,
+ void setData(optional<std::shared_ptr<const std::string>> data,
optional<Timestamp> modified_,
optional<Timestamp> expires_,
bool complete);
diff --git a/src/mbgl/tile/vector_tile.cpp b/src/mbgl/tile/vector_tile.cpp
index f03f836851..e22ccf0d54 100644
--- a/src/mbgl/tile/vector_tile.cpp
+++ b/src/mbgl/tile/vector_tile.cpp
@@ -21,7 +21,7 @@ void VectorTile::setError(std::exception_ptr err, const bool complete) {
GeometryTile::setError(err);
}
-void VectorTile::setData(std::shared_ptr<const std::string> data_,
+void VectorTile::setData(optional<std::shared_ptr<const std::string>> data,
optional<Timestamp> modified_,
optional<Timestamp> expires_,
const bool complete) {
@@ -29,7 +29,9 @@ void VectorTile::setData(std::shared_ptr<const std::string> data_,
modified = modified_;
expires = expires_;
- GeometryTile::setData(data_ ? std::make_unique<VectorTileData>(data_) : nullptr);
+ if (data) {
+ GeometryTile::setData(*data ? std::make_unique<VectorTileData>(*data) : nullptr);
+ }
}
} // namespace mbgl
diff --git a/src/mbgl/tile/vector_tile.hpp b/src/mbgl/tile/vector_tile.hpp
index c34fa4d763..c7caa0a1f6 100644
--- a/src/mbgl/tile/vector_tile.hpp
+++ b/src/mbgl/tile/vector_tile.hpp
@@ -18,9 +18,9 @@ public:
void setNecessity(Necessity) final;
void setError(std::exception_ptr, bool complete);
- void setData(std::shared_ptr<const std::string> data,
- optional<Timestamp> modified,
- optional<Timestamp> expires,
+ void setData(optional<std::shared_ptr<const std::string>> data,
+ optional<Timestamp> modified_,
+ optional<Timestamp> expires_,
bool complete);
private: