Fixed two bugs in SW-only clip mask generation
http://codereview.appspot.com/6306086/
git-svn-id: http://skia.googlecode.com/svn/trunk@4290 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrInOrderDrawBuffer.cpp b/src/gpu/GrInOrderDrawBuffer.cpp
index 907b4f1..9d8f887 100644
--- a/src/gpu/GrInOrderDrawBuffer.cpp
+++ b/src/gpu/GrInOrderDrawBuffer.cpp
@@ -25,7 +25,8 @@
, fLastRectVertexLayout(0)
, fQuadIndexBuffer(NULL)
, fMaxQuads(0)
- , fCurrQuad(0) {
+ , fCurrQuad(0)
+ , fFlushing(false) {
fCaps = gpu->getCaps();
@@ -443,7 +444,9 @@
GrCrash("Not implemented yet. Should not get here.");
}
-void GrInOrderDrawBuffer::clear(const GrIRect* rect, GrColor color) {
+void GrInOrderDrawBuffer::clear(const GrIRect* rect,
+ GrColor color,
+ GrRenderTarget* renderTarget) {
GrIRect r;
if (NULL == rect) {
// We could do something smart and remove previous draws and clears to
@@ -458,6 +461,8 @@
clr.fColor = color;
clr.fBeforeDrawIdx = fDraws.count();
clr.fRect = *rect;
+ clr.fRenderTarget = renderTarget;
+ GrSafeRef(clr.fRenderTarget);
}
void GrInOrderDrawBuffer::reset() {
@@ -522,7 +527,9 @@
for (int i = 0; i < numDraws; ++i) {
while (currClear < fClears.count() &&
i == fClears[currClear].fBeforeDrawIdx) {
- target->clear(&fClears[currClear].fRect, fClears[currClear].fColor);
+ target->clear(&fClears[currClear].fRect,
+ fClears[currClear].fColor,
+ fClears[currClear].fRenderTarget);
++currClear;
}
@@ -556,7 +563,9 @@
}
while (currClear < fClears.count()) {
GrAssert(fDraws.count() == fClears[currClear].fBeforeDrawIdx);
- target->clear(&fClears[currClear].fRect, fClears[currClear].fColor);
+ target->clear(&fClears[currClear].fRect,
+ fClears[currClear].fColor,
+ fClears[currClear].fRenderTarget);
++currClear;
}
target->setDrawState(prevDrawState);