[core] Avoid copy construction of PaintPropertyBinders
This commit is contained in:
@@ -13,8 +13,10 @@ using namespace style;
|
||||
CircleBucket::CircleBucket(const BucketParameters& parameters, const std::vector<const Layer*>& layers)
|
||||
: mode(parameters.mode) {
|
||||
for (const auto& layer : layers) {
|
||||
paintPropertyBinders.emplace(layer->getID(),
|
||||
CircleProgram::PaintPropertyBinders(
|
||||
paintPropertyBinders.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(layer->getID()),
|
||||
std::forward_as_tuple(
|
||||
layer->as<CircleLayer>()->impl->paint.evaluated,
|
||||
parameters.tileID.overscaledZ));
|
||||
}
|
||||
|
||||
@@ -29,8 +29,10 @@ struct GeometryTooLongException : std::exception {};
|
||||
|
||||
FillBucket::FillBucket(const BucketParameters& parameters, const std::vector<const Layer*>& layers) {
|
||||
for (const auto& layer : layers) {
|
||||
paintPropertyBinders.emplace(layer->getID(),
|
||||
FillProgram::PaintPropertyBinders(
|
||||
paintPropertyBinders.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(layer->getID()),
|
||||
std::forward_as_tuple(
|
||||
layer->as<FillLayer>()->impl->paint.evaluated,
|
||||
parameters.tileID.overscaledZ));
|
||||
}
|
||||
|
||||
@@ -18,8 +18,10 @@ LineBucket::LineBucket(const BucketParameters& parameters,
|
||||
: layout(layout_.evaluate(PropertyEvaluationParameters(parameters.tileID.overscaledZ))),
|
||||
overscaling(parameters.tileID.overscaleFactor()) {
|
||||
for (const auto& layer : layers) {
|
||||
paintPropertyBinders.emplace(layer->getID(),
|
||||
LineProgram::PaintPropertyBinders(
|
||||
paintPropertyBinders.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(layer->getID()),
|
||||
std::forward_as_tuple(
|
||||
layer->as<LineLayer>()->impl->paint.evaluated,
|
||||
parameters.tileID.overscaledZ));
|
||||
}
|
||||
|
||||
@@ -18,10 +18,13 @@ SymbolBucket::SymbolBucket(style::SymbolLayoutProperties::Evaluated layout_,
|
||||
sdfIcons(sdfIcons_),
|
||||
iconsNeedLinear(iconsNeedLinear_) {
|
||||
for (const auto& pair : layerPaintProperties) {
|
||||
paintPropertyBinders.emplace(pair.first, std::make_pair(
|
||||
SymbolIconProgram::PaintPropertyBinders(pair.second.first, zoom),
|
||||
SymbolSDFTextProgram::PaintPropertyBinders(pair.second.second, zoom)
|
||||
));
|
||||
paintPropertyBinders.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(pair.first),
|
||||
std::forward_as_tuple(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(pair.second.first, zoom),
|
||||
std::forward_as_tuple(pair.second.second, zoom)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -188,6 +188,9 @@ public:
|
||||
(void)z; // Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56958
|
||||
}
|
||||
|
||||
PaintPropertyBinders(PaintPropertyBinders&&) = default;
|
||||
PaintPropertyBinders(const PaintPropertyBinders&) = delete;
|
||||
|
||||
void populateVertexVectors(const GeometryTileFeature& feature, std::size_t length) {
|
||||
util::ignore({
|
||||
(binders.template get<Ps>()->populateVertexVector(feature, length), 0)...
|
||||
|
||||
Reference in New Issue
Block a user