Index: src/gpu/GrOvalRenderer.cpp |
diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp |
index b9303cf24debc1339e208c8952d462ff2fe1badb..8723d70a58ba30944b1d036ecdb557f0c797db5a 100644 |
--- a/src/gpu/GrOvalRenderer.cpp |
+++ b/src/gpu/GrOvalRenderer.cpp |
@@ -836,6 +836,8 @@ private: |
CircleBatch(const Geometry& geometry) { |
this->initClassID<CircleBatch>(); |
fGeoData.push_back(geometry); |
+ |
+ this->setBounds(geometry.fDevBounds); |
} |
bool onCombineIfPossible(GrBatch* t) override { |
@@ -856,6 +858,7 @@ private: |
} |
fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); |
+ this->joinBounds(that->bounds()); |
return true; |
} |
@@ -942,7 +945,7 @@ void GrOvalRenderer::drawCircle(GrDrawTarget* target, |
SkRect bounds; |
SkAutoTUnref<GrBatch> batch(create_circle_batch(color, viewMatrix, useCoverageAA, circle, |
stroke, &bounds)); |
- target->drawBatch(pipelineBuilder, batch, &bounds); |
+ target->drawBatch(pipelineBuilder, batch); |
} |
/////////////////////////////////////////////////////////////////////////////// |
@@ -1103,6 +1106,8 @@ private: |
EllipseBatch(const Geometry& geometry) { |
this->initClassID<EllipseBatch>(); |
fGeoData.push_back(geometry); |
+ |
+ this->setBounds(geometry.fDevBounds); |
} |
bool onCombineIfPossible(GrBatch* t) override { |
@@ -1123,6 +1128,7 @@ private: |
} |
fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); |
+ this->joinBounds(that->bounds()); |
return true; |
} |
@@ -1250,7 +1256,7 @@ bool GrOvalRenderer::drawEllipse(GrDrawTarget* target, |
return false; |
} |
- target->drawBatch(pipelineBuilder, batch, &bounds); |
+ target->drawBatch(pipelineBuilder, batch); |
return true; |
} |
@@ -1271,8 +1277,8 @@ public: |
SkRect fBounds; |
}; |
- static GrBatch* Create(const Geometry& geometry) { |
- return SkNEW_ARGS(DIEllipseBatch, (geometry)); |
+ static GrBatch* Create(const Geometry& geometry, const SkRect& bounds) { |
+ return SkNEW_ARGS(DIEllipseBatch, (geometry, bounds)); |
} |
const char* name() const override { return "DIEllipseBatch"; } |
@@ -1402,9 +1408,11 @@ public: |
SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } |
private: |
- DIEllipseBatch(const Geometry& geometry) { |
+ DIEllipseBatch(const Geometry& geometry, const SkRect& bounds) { |
this->initClassID<DIEllipseBatch>(); |
fGeoData.push_back(geometry); |
+ |
+ this->setBounds(bounds); |
} |
bool onCombineIfPossible(GrBatch* t) override { |
@@ -1425,6 +1433,7 @@ private: |
} |
fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); |
+ this->joinBounds(that->bounds()); |
return true; |
} |
@@ -1525,7 +1534,7 @@ static GrBatch* create_diellipse_batch(GrColor color, |
geometry.fBounds = *bounds; |
viewMatrix.mapRect(bounds); |
- return DIEllipseBatch::Create(geometry); |
+ return DIEllipseBatch::Create(geometry, *bounds); |
} |
bool GrOvalRenderer::drawDIEllipse(GrDrawTarget* target, |
@@ -1541,7 +1550,7 @@ bool GrOvalRenderer::drawDIEllipse(GrDrawTarget* target, |
if (!batch) { |
return false; |
} |
- target->drawBatch(pipelineBuilder, batch, &bounds); |
+ target->drawBatch(pipelineBuilder, batch); |
return true; |
} |
@@ -1803,6 +1812,8 @@ private: |
: fIndexBuffer(indexBuffer) { |
this->initClassID<RRectCircleRendererBatch>(); |
fGeoData.push_back(geometry); |
+ |
+ this->setBounds(geometry.fDevBounds); |
} |
bool onCombineIfPossible(GrBatch* t) override { |
@@ -1823,6 +1834,7 @@ private: |
} |
fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); |
+ this->joinBounds(that->bounds()); |
return true; |
} |
@@ -2022,6 +2034,8 @@ private: |
: fIndexBuffer(indexBuffer) { |
this->initClassID<RRectEllipseRendererBatch>(); |
fGeoData.push_back(geometry); |
+ |
+ this->setBounds(geometry.fDevBounds); |
} |
bool onCombineIfPossible(GrBatch* t) override { |
@@ -2042,6 +2056,7 @@ private: |
} |
fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); |
+ this->joinBounds(that->bounds()); |
return true; |
} |
@@ -2279,7 +2294,7 @@ bool GrOvalRenderer::drawRRect(GrDrawTarget* target, |
return false; |
} |
- target->drawBatch(pipelineBuilder, batch, &bounds); |
+ target->drawBatch(pipelineBuilder, batch); |
return true; |
} |