renderer: delegate the null data handling to engines

This commit is contained in:
Hermet Park 2025-06-17 15:39:30 +09:00
parent e96678df28
commit 033ec78e61
6 changed files with 5 additions and 7 deletions

View file

@ -864,7 +864,7 @@ bool GlRenderer::sync()
RenderRegion GlRenderer::region(RenderData data)
{
if (currentPass()->isEmpty()) return {};
if (!data || currentPass()->isEmpty()) return {};
auto shape = reinterpret_cast<GlShape*>(data);
auto bounds = shape->geometry.getBounds();

View file

@ -50,7 +50,6 @@ struct SwTask : Task
const RenderRegion& bounds()
{
//Can we skip the synchronization?
done();
return bbox;
}
@ -488,7 +487,8 @@ bool SwRenderer::blend(BlendMethod method)
RenderRegion SwRenderer::region(RenderData data)
{
return static_cast<SwTask*>(data)->bounds();
if (data) return static_cast<SwTask*>(data)->bounds();
return {};
}

View file

@ -120,7 +120,6 @@ namespace tvg
uint8_t unrefx(bool free)
{
if (refCnt > 0) --refCnt;
else TVGERR("RENDERER", "Corrupted Reference Count!");
if (free && refCnt == 0) {
delete(paint);

View file

@ -265,9 +265,8 @@ struct PictureImpl : Picture
RenderRegion bounds(RenderMethod* renderer)
{
if (impl.rd) return renderer->region(impl.rd);
if (vector) return vector->pImpl->bounds(renderer);
return {};
return renderer->region(impl.rd);
}
Result load(ImageLoader* loader)

View file

@ -115,7 +115,6 @@ struct ShapeImpl : Shape
RenderRegion bounds(RenderMethod* renderer)
{
if (!impl.rd) return {};
return renderer->region(impl.rd);
}

View file

@ -270,6 +270,7 @@ void WgRenderer::dispose(RenderData data) {
RenderRegion WgRenderer::region(RenderData data)
{
if (!data) return {};
auto renderData = (WgRenderDataPaint*)data;
if (renderData->type() == Type::Shape) {
auto& v1 = renderData->aabb.min;