reland 6798 w/ fix for bitmap-as-mask pixel-locking
git-svn-id: http://skia.googlecode.com/svn/trunk@6806 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkShader.cpp b/src/core/SkShader.cpp
index 2b20e3d..706c1b7 100644
--- a/src/core/SkShader.cpp
+++ b/src/core/SkShader.cpp
@@ -17,7 +17,7 @@
SkShader::SkShader() {
fLocalMatrix.reset();
- SkDEBUGCODE(fInSession = false;)
+ SkDEBUGCODE(fInSetContext = false;)
}
SkShader::SkShader(SkFlattenableReadBuffer& buffer)
@@ -28,21 +28,11 @@
fLocalMatrix.reset();
}
- SkDEBUGCODE(fInSession = false;)
+ SkDEBUGCODE(fInSetContext = false;)
}
SkShader::~SkShader() {
- SkASSERT(!fInSession);
-}
-
-void SkShader::beginSession() {
- SkASSERT(!fInSession);
- SkDEBUGCODE(fInSession = true;)
-}
-
-void SkShader::endSession() {
- SkASSERT(fInSession);
- SkDEBUGCODE(fInSession = false;)
+ SkASSERT(!fInSetContext);
}
void SkShader::flatten(SkFlattenableWriteBuffer& buffer) const {
@@ -57,6 +47,8 @@
bool SkShader::setContext(const SkBitmap& device,
const SkPaint& paint,
const SkMatrix& matrix) {
+ SkASSERT(!this->setContextHasBeenCalled());
+
const SkMatrix* m = &matrix;
SkMatrix total;
@@ -68,11 +60,17 @@
}
if (m->invert(&fTotalInverse)) {
fTotalInverseClass = (uint8_t)ComputeMatrixClass(fTotalInverse);
+ SkDEBUGCODE(fInSetContext = true;)
return true;
}
return false;
}
+void SkShader::endContext() {
+ SkASSERT(fInSetContext);
+ SkDEBUGCODE(fInSetContext = false;)
+}
+
SkShader::ShadeProc SkShader::asAShadeProc(void** ctx) {
return NULL;
}