diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2015-10-26 15:45:32 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2015-10-26 16:44:55 +0100 |
commit | 75dec6ffac6f3e79e5a173cd8a3f98d374ed1c09 (patch) | |
tree | dd3e2752cfe2c1ea741ac1b97d38e5e4bc4aa008 /src/mbgl/util/worker.cpp | |
parent | c0c554e36fd43bfe57ef13fe60f9cd50b5c018fd (diff) | |
download | qtlocation-mapboxgl-75dec6ffac6f3e79e5a173cd8a3f98d374ed1c09.tar.gz |
[core] always reparse with the freshest possible placement config
Fixes an issue where updates to stale tiles would remove labels altogether until the map was rotated.
Diffstat (limited to 'src/mbgl/util/worker.cpp')
-rw-r--r-- | src/mbgl/util/worker.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/mbgl/util/worker.cpp b/src/mbgl/util/worker.cpp index 371766f096..4dd6740ec1 100644 --- a/src/mbgl/util/worker.cpp +++ b/src/mbgl/util/worker.cpp @@ -37,10 +37,11 @@ public: void parseVectorTile(TileWorker* worker, const std::shared_ptr<const std::string> data, + PlacementConfig config, std::function<void(TileParseResult)> callback) { try { pbf tilePBF(reinterpret_cast<const unsigned char*>(data->data()), data->size()); - callback(worker->parseAllLayers(VectorTile(tilePBF))); + callback(worker->parseAllLayers(VectorTile(tilePBF), config)); } catch (const std::exception& ex) { callback(TileParseResult(ex.what())); } @@ -57,9 +58,10 @@ public: void parseLiveTile(TileWorker* worker, const AnnotationTile* tile, + PlacementConfig config, std::function<void(TileParseResult)> callback) { try { - callback(worker->parseAllLayers(*tile)); + callback(worker->parseAllLayers(*tile, config)); } catch (const std::exception& ex) { callback(TileParseResult(ex.what())); } @@ -67,11 +69,9 @@ public: void redoPlacement(TileWorker* worker, const std::unordered_map<std::string, std::unique_ptr<Bucket>>* buckets, - float angle, - float pitch, - bool collisionDebug, + PlacementConfig config, std::function<void()> callback) { - worker->redoPlacement(buckets, angle, pitch, collisionDebug); + worker->redoPlacement(buckets, config); callback(); } }; @@ -97,10 +97,11 @@ Worker::parseRasterTile(std::unique_ptr<RasterBucket> bucket, std::unique_ptr<WorkRequest> Worker::parseVectorTile(TileWorker& worker, const std::shared_ptr<const std::string> data, + PlacementConfig config, std::function<void(TileParseResult)> callback) { current = (current + 1) % threads.size(); return threads[current]->invokeWithCallback(&Worker::Impl::parseVectorTile, callback, &worker, - data); + data, config); } std::unique_ptr<WorkRequest> @@ -113,22 +114,21 @@ Worker::parsePendingVectorTileLayers(TileWorker& worker, std::unique_ptr<WorkRequest> Worker::parseLiveTile(TileWorker& worker, const AnnotationTile& tile, + PlacementConfig config, std::function<void(TileParseResult)> callback) { current = (current + 1) % threads.size(); return threads[current]->invokeWithCallback(&Worker::Impl::parseLiveTile, callback, &worker, - &tile); + &tile, config); } std::unique_ptr<WorkRequest> Worker::redoPlacement(TileWorker& worker, const std::unordered_map<std::string, std::unique_ptr<Bucket>>& buckets, - float angle, - float pitch, - bool collisionDebug, + PlacementConfig config, std::function<void()> callback) { current = (current + 1) % threads.size(); return threads[current]->invokeWithCallback(&Worker::Impl::redoPlacement, callback, &worker, - &buckets, angle, pitch, collisionDebug); + &buckets, config); } } // end namespace mbgl |