| Index: src/core/SkBlitter.cpp
|
| diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp
|
| index 74cd29824e1bf4f08b4b4701da2efea9862a1a44..2f3cdef6e3f9b70c1a0d42a364f1c9d19d61f258 100644
|
| --- a/src/core/SkBlitter.cpp
|
| +++ b/src/core/SkBlitter.cpp
|
| @@ -591,29 +591,14 @@ public:
|
| return size;
|
| }
|
|
|
| - virtual bool validContext(const ContextRec& rec, SkMatrix* totalInverse) const SK_OVERRIDE {
|
| - if (!this->INHERITED::validContext(rec, totalInverse)) {
|
| - return false;
|
| - }
|
| - if (fProxy) {
|
| - return fProxy->validContext(rec);
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - virtual SkShader::Context* createContext(const ContextRec& rec, void* storage) const SK_OVERRIDE
|
| - {
|
| - if (!this->validContext(rec, NULL)) {
|
| - return NULL;
|
| - }
|
| -
|
| - SkShader::Context* proxyContext;
|
| + virtual Context* onCreateContext(const ContextRec& rec, void* storage) const SK_OVERRIDE {
|
| + SkShader::Context* proxyContext = NULL;
|
| if (fProxy) {
|
| char* proxyContextStorage = (char*) storage + sizeof(Sk3DShaderContext);
|
| proxyContext = fProxy->createContext(rec, proxyContextStorage);
|
| - SkASSERT(proxyContext);
|
| - } else {
|
| - proxyContext = NULL;
|
| + if (!proxyContext) {
|
| + return NULL;
|
| + }
|
| }
|
| return SkNEW_PLACEMENT_ARGS(storage, Sk3DShaderContext, (*this, rec, proxyContext));
|
| }
|
| @@ -1035,9 +1020,6 @@ SkShaderBlitter::~SkShaderBlitter() {
|
| bool SkShaderBlitter::resetShaderContext(const SkBitmap& device, const SkPaint& paint,
|
| const SkMatrix& matrix) {
|
| SkShader::ContextRec rec(device, paint, matrix);
|
| - if (!fShader->validContext(rec)) {
|
| - return false;
|
| - }
|
|
|
| // Only destroy the old context if we have a new one. We need to ensure to have a
|
| // live context in fShaderContext because the storage is owned by an SkSmallAllocator
|
| @@ -1046,7 +1028,5 @@ bool SkShaderBlitter::resetShaderContext(const SkBitmap& device, const SkPaint&
|
| // shader to create it. It is therefore safe to re-use the storage.
|
| fShaderContext->~Context();
|
| fShaderContext = fShader->createContext(rec, (void*)fShaderContext);
|
| - SkASSERT(fShaderContext);
|
| -
|
| - return true;
|
| + return fShaderContext != NULL;
|
| }
|
|
|