diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-05-23 13:35:07 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-06-10 12:42:14 +0200 |
commit | 971807d3b09892dbb6901461d1ce9adb3552a22d (patch) | |
tree | 019dbadbc4d42aef1725ba2e39a757ab80457816 | |
parent | 436d8eb5e09948b3baa86570fe16e3964fddaae0 (diff) | |
download | qtlocation-mapboxgl-971807d3b09892dbb6901461d1ce9adb3552a22d.tar.gz |
[core] move parsePending() call to TileData
-rw-r--r-- | src/mbgl/style/source.cpp | 1 | ||||
-rw-r--r-- | src/mbgl/tile/geometry_tile_data.cpp | 14 |
2 files changed, 8 insertions, 7 deletions
diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp index a31c804b01..10959a9fd8 100644 --- a/src/mbgl/style/source.cpp +++ b/src/mbgl/style/source.cpp @@ -406,7 +406,6 @@ void Source::setObserver(SourceObserver* observer_) { } void Source::onTileLoaded(TileData& tileData, bool isNewTile) { - tileData.redoPlacement(); observer->onTileLoaded(*this, tileData.id, isNewTile); } diff --git a/src/mbgl/tile/geometry_tile_data.cpp b/src/mbgl/tile/geometry_tile_data.cpp index d367fa4d07..aefd327ff0 100644 --- a/src/mbgl/tile/geometry_tile_data.cpp +++ b/src/mbgl/tile/geometry_tile_data.cpp @@ -46,6 +46,7 @@ void GeometryTileData::setData(std::exception_ptr err, workRequest.reset(); availableData = DataAvailability::All; buckets.clear(); + redoPlacement(); observer->onTileLoaded(*this, true); return; } @@ -80,6 +81,7 @@ void GeometryTileData::setData(std::exception_ptr err, geometryTile = std::move(resultBuckets.geometryTile); } + redoPlacement(); observer->onTileLoaded(*this, true); } else { availableData = DataAvailability::All; @@ -121,6 +123,7 @@ bool GeometryTileData::parsePending() { geometryTile = std::move(resultBuckets.geometryTile); } + redoPlacement(); observer->onTileLoaded(*this, false); } else { availableData = DataAvailability::All; @@ -142,17 +145,16 @@ Bucket* GeometryTileData::getBucket(const style::Layer& layer) { } void GeometryTileData::redoPlacement(const PlacementConfig newConfig) { - if (newConfig != placedConfig) { - targetConfig = newConfig; - - redoPlacement(); - } + targetConfig = newConfig; + redoPlacement(); } void GeometryTileData::redoPlacement() { // Don't start a new placement request when the current one hasn't completed yet, or when // we are parsing buckets. - if (workRequest) return; + if (workRequest || targetConfig == placedConfig) { + return; + } workRequest = worker.redoPlacement(tileWorker, buckets, targetConfig, [this, config = targetConfig](std::unique_ptr<CollisionTile> collisionTile) { workRequest.reset(); |