SkTCopyOnFirstWrite
R=reed@google.com
Review URL: https://codereview.appspot.com/6650047
git-svn-id: http://skia.googlecode.com/svn/trunk@5905 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index 738521b..8997280 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -582,7 +582,7 @@
this->prepareToDraw(NULL, DEFAULT_BUFFERING)->clear(rect, color, target);
}
-void GrContext::drawPaint(const GrPaint& paint) {
+void GrContext::drawPaint(const GrPaint& origPaint) {
// set rect to be big enough to fill the space, but not super-huge, so we
// don't overflow fixed-point implementations
GrRect r;
@@ -590,8 +590,7 @@
GrIntToScalar(getRenderTarget()->width()),
GrIntToScalar(getRenderTarget()->height()));
GrMatrix inverse;
- SkTLazy<GrPaint> tmpPaint;
- const GrPaint* p = &paint;
+ SkTCopyOnFirstWrite<GrPaint> paint(origPaint);
AutoMatrix am;
// We attempt to map r by the inverse matrix and draw that. mapRect will
@@ -604,25 +603,18 @@
}
inverse.mapRect(&r);
} else {
- if (paint.hasStage()) {
- tmpPaint.set(paint);
- p = tmpPaint.get();
- if (!tmpPaint.get()->preConcatSamplerMatricesWithInverse(fDrawState->getViewMatrix())) {
+ if (paint->hasStage()) {
+ if (!paint.writable()->preConcatSamplerMatricesWithInverse(fDrawState->getViewMatrix())) {
GrPrintf("Could not invert matrix\n");
}
}
am.set(this, GrMatrix::I());
}
// by definition this fills the entire clip, no need for AA
- if (paint.isAntiAlias()) {
- if (!tmpPaint.isValid()) {
- tmpPaint.set(paint);
- p = tmpPaint.get();
- }
- GrAssert(p == tmpPaint.get());
- tmpPaint.get()->setAntiAlias(false);
+ if (paint->isAntiAlias()) {
+ paint.writable()->setAntiAlias(false);
}
- this->drawRect(*p, r);
+ this->drawRect(*paint, r);
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index b168e57..df7754d 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -20,7 +20,6 @@
#include "SkDrawProcs.h"
#include "SkGlyphCache.h"
#include "SkImageFilter.h"
-#include "SkTLazy.h"
#include "SkUtils.h"
#define CACHE_COMPATIBLE_DEVICE_TEXTURES 1