Clean up likely reference leak in Ganesh custom stages.
http://codereview.appspot.com/6286047/
git-svn-id: http://skia.googlecode.com/svn/trunk@4146 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/gpu/GrSamplerState.h b/include/gpu/GrSamplerState.h
index fb59111..f52775d 100644
--- a/include/gpu/GrSamplerState.h
+++ b/include/gpu/GrSamplerState.h
@@ -165,8 +165,9 @@
this->reset(kDefault_WrapMode, kDefault_Filter, GrMatrix::I());
}
- void setCustomStage(GrCustomStage* stage) {
+ GrCustomStage* setCustomStage(GrCustomStage* stage) {
GrSafeAssign(fCustomStage, stage);
+ return stage;
}
GrCustomStage* getCustomStage() const { return fCustomStage; }
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index de9d973..056c5d8 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -540,15 +540,16 @@
GrSamplerState* sampler = grPaint->textureSampler(kShaderTextureIdx);
switch (bmptype) {
case SkShader::kRadial_BitmapType: {
- sampler->setCustomStage(new GrRadialGradient());
+ sampler->setCustomStage(new GrRadialGradient())->unref();
} break;
case SkShader::kSweep_BitmapType: {
- sampler->setCustomStage(new GrSweepGradient());
+ sampler->setCustomStage(new GrSweepGradient())->unref();
} break;
case SkShader::kTwoPointRadial_BitmapType: {
- sampler->setCustomStage(new GrRadial2Gradient(twoPointParams[0],
- twoPointParams[1],
- twoPointParams[2] < 0));
+ sampler->setCustomStage(new
+ GrRadial2Gradient(twoPointParams[0],
+ twoPointParams[1],
+ twoPointParams[2] < 0))->unref();
} break;
default:
break;
diff --git a/src/gpu/gl/GrGpuGL_program.cpp b/src/gpu/gl/GrGpuGL_program.cpp
index c230d40..30c5422 100644
--- a/src/gpu/gl/GrGpuGL_program.cpp
+++ b/src/gpu/gl/GrGpuGL_program.cpp
@@ -7,8 +7,6 @@
#include "GrGpuGL.h"
-#include "effects/GrGradientEffects.h"
-
#include "GrCustomStage.h"
#include "GrGLProgramStage.h"
#include "GrGpuVertex.h"