diff --git a/src/mln/layout/symbol_layout.cpp b/src/mln/layout/symbol_layout.cpp index 8a6471b45..a71c27ff9 100644 --- a/src/mln/layout/symbol_layout.cpp +++ b/src/mln/layout/symbol_layout.cpp @@ -1231,9 +1231,12 @@ size_t SymbolLayout::addSymbol(SymbolBucket::Buffer& buffer, float sortKey) { constexpr const uint16_t instanceCount = 1; - const uint16_t baseInstance = buffer.segments.empty() ? 0 : buffer.segments.back().instanceCount; - if (buffer.segments.empty() || baseInstance + instanceCount > std::numeric_limits::max() || + if (buffer.segments.empty() || + buffer.segments.back().instanceCount + instanceCount > std::numeric_limits::max() || std::fabs(buffer.segments.back().sortKey - sortKey) > std::numeric_limits::epsilon()) { + const uint16_t baseInstance = buffer.segments.empty() + ? 0 + : buffer.segments.back().baseInstance + buffer.segments.back().instanceCount; buffer.segments.emplace_back(RenderStaticData::symbolSegment(baseInstance, sortKey)); } diff --git a/src/mln/renderer/paint_property_binder.hpp b/src/mln/renderer/paint_property_binder.hpp index e49f8f301..e62964ec5 100644 --- a/src/mln/renderer/paint_property_binder.hpp +++ b/src/mln/renderer/paint_property_binder.hpp @@ -363,7 +363,7 @@ public: using PaintPropertyBinder, A>::setInterleavedBuffer; void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override { - this->template setInterleavedBuffer(buffer); + this->template setInterleavedBuffer>(buffer); } private: @@ -479,7 +479,7 @@ public: using PaintPropertyBinder, A>::setInterleavedBuffer; void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override { - this->template setInterleavedBuffer(buffer); + this->template setInterleavedBuffer>(buffer); } std::tuple> getVertexValue(std::size_t index) const override { @@ -579,7 +579,7 @@ public: using PaintPropertyBinder, PossiblyEvaluatedPropertyValue>, A1, A2>:: setInterleavedBuffer; void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override { - this->template setInterleavedBuffer(buffer); + this->template setInterleavedBuffer>(buffer); } private: @@ -699,7 +699,7 @@ public: interleavedVertexBuffer = std::move(other.interleavedVertexBuffer); (([&] { - binders.template get()->setInterleavedBuffer(interleavedVertexBuffer); + binders.template get()->interleavedVertexBuffer = &interleavedVertexBuffer; }()), ...); }