Index: gm/yuvtorgbeffect.cpp |
diff --git a/gm/yuvtorgbeffect.cpp b/gm/yuvtorgbeffect.cpp |
index 265491b757fe6db99409f6328b8f43c59af24eda..026823e8ee03f51c73a8f2f0fc0af92d44ae0138 100644 |
--- a/gm/yuvtorgbeffect.cpp |
+++ b/gm/yuvtorgbeffect.cpp |
@@ -83,12 +83,11 @@ |
GrDrawState* drawState = tt.target()->drawState(); |
- SkAutoTUnref<GrTexture> texture[3]; |
- texture[0].reset(GrRefCachedBitmapTexture(context, fBmp[0], NULL)); |
- texture[1].reset(GrRefCachedBitmapTexture(context, fBmp[1], NULL)); |
- texture[2].reset(GrRefCachedBitmapTexture(context, fBmp[2], NULL)); |
- |
- if (!texture[0] || !texture[1] || !texture[2]) { |
+ GrTexture* texture[3]; |
+ texture[0] = GrLockAndRefCachedBitmapTexture(context, fBmp[0], NULL); |
+ texture[1] = GrLockAndRefCachedBitmapTexture(context, fBmp[1], NULL); |
+ texture[2] = GrLockAndRefCachedBitmapTexture(context, fBmp[2], NULL); |
+ if ((NULL == texture[0]) || (NULL == texture[1]) || (NULL == texture[2])) { |
return; |
} |
@@ -98,35 +97,38 @@ |
for (int space = kJPEG_SkYUVColorSpace; space <= kLastEnum_SkYUVColorSpace; |
++space) { |
- SkRect renderRect = SkRect::MakeWH(SkIntToScalar(fBmp[0].width()), |
- SkIntToScalar(fBmp[0].height())); |
- renderRect.outset(kDrawPad, kDrawPad); |
+ SkRect renderRect = SkRect::MakeWH(SkIntToScalar(fBmp[0].width()), |
+ SkIntToScalar(fBmp[0].height())); |
+ renderRect.outset(kDrawPad, kDrawPad); |
- SkScalar y = kDrawPad + kTestPad + space * kColorSpaceOffset; |
- SkScalar x = kDrawPad + kTestPad; |
+ SkScalar y = kDrawPad + kTestPad + space * kColorSpaceOffset; |
+ SkScalar x = kDrawPad + kTestPad; |
- const int indices[6][3] = {{0, 1, 2}, {0, 2, 1}, {1, 0, 2}, |
- {1, 2, 0}, {2, 0, 1}, {2, 1, 0}}; |
+ const int indices[6][3] = {{0, 1, 2}, {0, 2, 1}, {1, 0, 2}, {1, 2, 0}, {2, 0, 1}, {2, 1, 0}}; |
- for (int i = 0; i < 6; ++i) { |
- SkAutoTUnref<GrFragmentProcessor> fp( |
- GrYUVtoRGBEffect::Create(texture[indices[i][0]], |
- texture[indices[i][1]], |
- texture[indices[i][2]], |
- static_cast<SkYUVColorSpace>(space))); |
- if (fp) { |
- SkMatrix viewMatrix; |
- viewMatrix.setTranslate(x, y); |
- drawState->reset(viewMatrix); |
- drawState->setRenderTarget(rt); |
- drawState->setColor(0xffffffff); |
- drawState->addColorProcessor(fp); |
- tt.target()->drawSimpleRect(renderRect); |
- } |
- x += renderRect.width() + kTestPad; |
- } |
+ for (int i = 0; i < 6; ++i) { |
+ SkAutoTUnref<GrFragmentProcessor> fp( |
+ GrYUVtoRGBEffect::Create(texture[indices[i][0]], |
+ texture[indices[i][1]], |
+ texture[indices[i][2]], |
+ static_cast<SkYUVColorSpace>(space))); |
+ if (fp) { |
+ SkMatrix viewMatrix; |
+ viewMatrix.setTranslate(x, y); |
+ drawState->reset(viewMatrix); |
+ drawState->setRenderTarget(rt); |
+ drawState->setColor(0xffffffff); |
+ drawState->addColorProcessor(fp); |
+ tt.target()->drawSimpleRect(renderRect); |
+ } |
+ x += renderRect.width() + kTestPad; |
+ } |
} |
- } |
+ |
+ GrUnlockAndUnrefCachedBitmapTexture(texture[0]); |
+ GrUnlockAndUnrefCachedBitmapTexture(texture[1]); |
+ GrUnlockAndUnrefCachedBitmapTexture(texture[2]); |
+ } |
private: |
SkBitmap fBmp[3]; |