Add checks for zero indexes on fill patterns to match fills. (#1638)

Co-authored-by: Bart Louwers <bart@emeel.net>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Tim Sylvester
2023-09-14 16:10:56 -07:00
committed by GitHub
parent 82ab67aa8d
commit 2d71683feb
7 changed files with 34 additions and 8 deletions

View File

@@ -167,7 +167,10 @@ void DrawableBuilder::setSegments(const gfx::DrawMode mode,
gfx::IndexVectorBasePtr indexes,
const SegmentBase* segments,
const std::size_t segmentCount) {
assert(indexes && indexes->elements());
if (!indexes || !indexes->elements()) {
assert("Missing segment indexes");
return;
}
impl->sharedIndexes = std::move(indexes);
for (std::size_t i = 0; i < segmentCount; ++i) {
const auto& seg = segments[i];

View File

@@ -210,10 +210,12 @@ void DrawableGL::upload(gfx::UploadPass& uploadPass) {
if (!glSeg.getVertexArray().isValid()) {
auto vertexArray = glContext.createVertexArray();
IndexBufferGL& indexBuffer = *static_cast<IndexBufferGL*>(impl->indexes->getBuffer());
const auto& indexBuffer = static_cast<IndexBufferGL&>(*impl->indexes->getBuffer());
vertexArray.bind(glContext, *indexBuffer.buffer, bindings);
assert(vertexArray.isValid());
glSeg.setVertexArray(std::move(vertexArray));
if (vertexArray.isValid()) {
glSeg.setVertexArray(std::move(vertexArray));
}
}
};
}

View File

@@ -706,7 +706,7 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders,
}
};
if (patternBuilder) {
if (patternBuilder && bucket.sharedTriangles->elements()) {
patternBuilder->setShader(fillShader);
patternBuilder->setRenderPass(renderPass);
if (outlinePatternBuilder) {
@@ -726,7 +726,7 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders,
"FillPatternTilePropsUBO",
getFillPatternTilePropsUBO());
}
if (outlinePatternBuilder) {
if (outlinePatternBuilder && bucket.sharedLines->elements()) {
outlinePatternBuilder->setShader(outlineShader);
outlinePatternBuilder->setRenderPass(renderPass);
outlinePatternBuilder->setVertexAttributes(std::move(vertexAttrs));

View File

@@ -233,10 +233,15 @@ constexpr auto Image0UniformName = "u_image0";
constexpr auto Image1UniformName = "u_image1";
void RenderRasterLayer::updateLayerTweaker() {
if (layerGroup) {
if (layerGroup || imageLayerGroup) {
tweaker = std::make_shared<RasterLayerTweaker>(getID(), evaluatedProperties);
tweaker->enableOverdrawInspector(overdrawInspector);
layerGroup->setLayerTweaker(tweaker);
if (layerGroup) {
layerGroup->setLayerTweaker(tweaker);
}
if (imageLayerGroup) {
imageLayerGroup->setLayerTweaker(tweaker);
}
}
}