diff --git a/src/mbgl/map/vector_tile_data.cpp b/src/mbgl/map/vector_tile_data.cpp index df7923273c9..27172a3e637 100644 --- a/src/mbgl/map/vector_tile_data.cpp +++ b/src/mbgl/map/vector_tile_data.cpp @@ -144,16 +144,15 @@ void VectorTileData::redoPlacement(const PlacementConfig newConfig, const std::f if (newConfig != placedConfig) { targetConfig = newConfig; - if (!workRequest) { - // Don't start a new placement request when the current one hasn't completed yet, or when - // we are parsing buckets. - redoPlacement(callback); - } + redoPlacement(callback); } } void VectorTileData::redoPlacement(const std::function& callback) { - workRequest.reset(); + // Don't start a new placement request when the current one hasn't completed yet, or when + // we are parsing buckets. + if (workRequest) return; + workRequest = worker.redoPlacement(tileWorker, buckets, targetConfig, [this, callback, config = targetConfig] { workRequest.reset();