summaryrefslogtreecommitdiff
path: root/src/mbgl/util/worker.cpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2015-10-26 15:45:32 +0100
committerKonstantin Käfer <mail@kkaefer.com>2015-10-26 16:44:55 +0100
commit75dec6ffac6f3e79e5a173cd8a3f98d374ed1c09 (patch)
treedd3e2752cfe2c1ea741ac1b97d38e5e4bc4aa008 /src/mbgl/util/worker.cpp
parentc0c554e36fd43bfe57ef13fe60f9cd50b5c018fd (diff)
downloadqtlocation-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.cpp24
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