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) RenderRegion GlRenderer::region(RenderData data)
{ {
if (currentPass()->isEmpty()) return {}; if (!data || currentPass()->isEmpty()) return {};
auto shape = reinterpret_cast<GlShape*>(data); auto shape = reinterpret_cast<GlShape*>(data);
auto bounds = shape->geometry.getBounds(); auto bounds = shape->geometry.getBounds();

View file

@ -50,7 +50,6 @@ struct SwTask : Task
const RenderRegion& bounds() const RenderRegion& bounds()
{ {
//Can we skip the synchronization?
done(); done();
return bbox; return bbox;
} }
@ -488,7 +487,8 @@ bool SwRenderer::blend(BlendMethod method)
RenderRegion SwRenderer::region(RenderData data) 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) uint8_t unrefx(bool free)
{ {
if (refCnt > 0) --refCnt; if (refCnt > 0) --refCnt;
else TVGERR("RENDERER", "Corrupted Reference Count!");
if (free && refCnt == 0) { if (free && refCnt == 0) {
delete(paint); delete(paint);

View file

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

View file

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

View file

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