summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-03-02 11:57:37 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-03-15 11:43:42 -0700
commitaf3898d980d43663d15884fa85d8fbb6339bfbdc (patch)
tree86a58575a5fc9b5d30e58bb504260f7f0f4f9667
parentcee26ee3c82e39f7ad69612c046ecc0a85660ed0 (diff)
downloadqtlocation-mapboxgl-af3898d980d43663d15884fa85d8fbb6339bfbdc.tar.gz
[core] Avoid copy construction of PaintPropertyBinders
-rw-r--r--src/mbgl/renderer/circle_bucket.cpp6
-rw-r--r--src/mbgl/renderer/fill_bucket.cpp6
-rw-r--r--src/mbgl/renderer/line_bucket.cpp6
-rw-r--r--src/mbgl/renderer/symbol_bucket.cpp11
-rw-r--r--src/mbgl/style/paint_property_binder.hpp3
5 files changed, 22 insertions, 10 deletions
diff --git a/src/mbgl/renderer/circle_bucket.cpp b/src/mbgl/renderer/circle_bucket.cpp
index 6722d04497..e437eff135 100644
--- a/src/mbgl/renderer/circle_bucket.cpp
+++ b/src/mbgl/renderer/circle_bucket.cpp
@@ -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));
}
diff --git a/src/mbgl/renderer/fill_bucket.cpp b/src/mbgl/renderer/fill_bucket.cpp
index 64efafb108..d566461673 100644
--- a/src/mbgl/renderer/fill_bucket.cpp
+++ b/src/mbgl/renderer/fill_bucket.cpp
@@ -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));
}
diff --git a/src/mbgl/renderer/line_bucket.cpp b/src/mbgl/renderer/line_bucket.cpp
index c4028f4b31..13caea4539 100644
--- a/src/mbgl/renderer/line_bucket.cpp
+++ b/src/mbgl/renderer/line_bucket.cpp
@@ -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));
}
diff --git a/src/mbgl/renderer/symbol_bucket.cpp b/src/mbgl/renderer/symbol_bucket.cpp
index fa4178dda1..0132e2773b 100644
--- a/src/mbgl/renderer/symbol_bucket.cpp
+++ b/src/mbgl/renderer/symbol_bucket.cpp
@@ -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)));
}
}
diff --git a/src/mbgl/style/paint_property_binder.hpp b/src/mbgl/style/paint_property_binder.hpp
index 3654424472..630c1104f0 100644
--- a/src/mbgl/style/paint_property_binder.hpp
+++ b/src/mbgl/style/paint_property_binder.hpp
@@ -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)...