Make GrEffect::textureAccess non-virtual. Require subclasses to append their GrTAs.
Review URL: https://codereview.appspot.com/7062063
git-svn-id: http://skia.googlecode.com/svn/trunk@7129 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrEffect.cpp b/src/gpu/GrEffect.cpp
index d470c9c..dbfb6b0 100644
--- a/src/gpu/GrEffect.cpp
+++ b/src/gpu/GrEffect.cpp
@@ -58,12 +58,7 @@
int32_t GrBackendEffectFactory::fCurrEffectClassID = GrBackendEffectFactory::kIllegalEffectClassID;
-GrEffect::GrEffect(int numTextures)
- : fNumTextures(numTextures) {
-}
-
GrEffect::~GrEffect() {
-
}
bool GrEffect::isOpaque(bool inputTextureIsOpaque) const {
@@ -74,7 +69,6 @@
return this->getFactory().name();
}
-
bool GrEffect::isEqual(const GrEffect& s) const {
if (this->numTextures() != s.numTextures()) {
return false;
@@ -87,10 +81,8 @@
return true;
}
-const GrTextureAccess& GrEffect::textureAccess(int index) const {
- GrCrash("We shouldn't be calling this function on the base class.");
- static GrTextureAccess kDummy;
- return kDummy;
+void GrEffect::addTextureAccess(const GrTextureAccess* access) {
+ fTextureAccesses.push_back(access);
}
void * GrEffect::operator new(size_t size) {
diff --git a/src/gpu/effects/GrSingleTextureEffect.cpp b/src/gpu/effects/GrSingleTextureEffect.cpp
index 05eff6b..14f5b64 100644
--- a/src/gpu/effects/GrSingleTextureEffect.cpp
+++ b/src/gpu/effects/GrSingleTextureEffect.cpp
@@ -58,51 +58,46 @@
///////////////////////////////////////////////////////////////////////////////
GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture)
- : INHERITED(1)
- , fTextureAccess(texture) {
+ : fTextureAccess(texture) {
fMatrix.reset();
+ this->addTextureAccess(&fTextureAccess);
}
GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture, bool bilerp)
- : INHERITED(1)
- , fTextureAccess(texture, bilerp) {
+ : fTextureAccess(texture, bilerp) {
fMatrix.reset();
+ this->addTextureAccess(&fTextureAccess);
}
GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture, const GrTextureParams& params)
- : INHERITED(1)
- , fTextureAccess(texture, params) {
+ : fTextureAccess(texture, params) {
fMatrix.reset();
+ this->addTextureAccess(&fTextureAccess);
}
GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture, const SkMatrix& m)
- : INHERITED(1)
- , fTextureAccess(texture)
+ : fTextureAccess(texture)
, fMatrix(m) {
+ this->addTextureAccess(&fTextureAccess);
}
GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture, const SkMatrix& m, bool bilerp)
- : INHERITED(1)
- , fTextureAccess(texture, bilerp)
+ : fTextureAccess(texture, bilerp)
, fMatrix(m) {
+ this->addTextureAccess(&fTextureAccess);
}
GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture,
const SkMatrix& m,
const GrTextureParams& params)
- : INHERITED(1)
- , fTextureAccess(texture, params)
+ : fTextureAccess(texture, params)
, fMatrix(m) {
+ this->addTextureAccess(&fTextureAccess);
}
GrSingleTextureEffect::~GrSingleTextureEffect() {
}
-const GrTextureAccess& GrSingleTextureEffect::textureAccess(int index) const {
- GrAssert(0 == index);
- return fTextureAccess;
-}
-
const GrBackendEffectFactory& GrSingleTextureEffect::getFactory() const {
return GrTBackendEffectFactory<GrSingleTextureEffect>::getInstance();
}
diff --git a/src/gpu/effects/GrSingleTextureEffect.h b/src/gpu/effects/GrSingleTextureEffect.h
index a2f8bff..fca5e93 100644
--- a/src/gpu/effects/GrSingleTextureEffect.h
+++ b/src/gpu/effects/GrSingleTextureEffect.h
@@ -33,8 +33,6 @@
virtual ~GrSingleTextureEffect();
- virtual const GrTextureAccess& textureAccess(int index) const SK_OVERRIDE;
-
static const char* Name() { return "Single Texture"; }
const SkMatrix& getMatrix() const { return fMatrix; }