Index: cc/output/gl_renderer.cc |
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc |
index 0133b277d66461809010534a6e56e07fc9c47a92..2b1f2a1bf8649739a8c7ed0af6d87ebe3c4904b8 100644 |
--- a/cc/output/gl_renderer.cc |
+++ b/cc/output/gl_renderer.cc |
@@ -752,9 +752,15 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame, |
SkScalar color_matrix[20]; |
bool use_color_matrix = false; |
if (quad->filter) { |
- SkColorFilter* cf; |
- if ((quad->filter->asColorFilter(&cf)) && cf->asColorMatrix(color_matrix) && |
- !quad->filter->getInput(0)) { |
+ skia::RefPtr<SkColorFilter> cf; |
+ |
+ { |
+ SkColorFilter* colorfilter_rawptr = NULL; |
+ quad->filter->asColorFilter(&colorfilter_rawptr); |
+ cf = skia::AdoptRef(colorfilter_rawptr); |
+ } |
+ |
+ if (cf && cf->asColorMatrix(color_matrix) && !quad->filter->getInput(0)) { |
// We have a single color matrix as a filter; apply it locally |
// in the compositor. |
use_color_matrix = true; |