summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/jni/android/graphics/Shader.cpp16
-rw-r--r--libs/hwui/SkiaCanvas.cpp12
-rw-r--r--libs/hwui/tests/unit/RecordingCanvasTests.cpp26
-rw-r--r--libs/hwui/tests/unit/SkiaBehaviorTests.cpp10
4 files changed, 41 insertions, 23 deletions
diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp
index 9781ae11daec..03462a6d402e 100644
--- a/core/jni/android/graphics/Shader.cpp
+++ b/core/jni/android/graphics/Shader.cpp
@@ -1,5 +1,6 @@
#include "GraphicsJNI.h"
#include "SkGradientShader.h"
+#include "SkImagePriv.h"
#include "SkShader.h"
#include "SkXfermode.h"
#include "core_jni_helpers.h"
@@ -94,12 +95,15 @@ static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jobject jbitmap,
// we'll pass an empty SkBitmap to avoid crashing/excepting for compatibility.
GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap);
}
- SkShader* s = SkShader::CreateBitmapShader(bitmap,
- (SkShader::TileMode)tileModeX,
- (SkShader::TileMode)tileModeY);
-
- ThrowIAE_IfNull(env, s);
- return reinterpret_cast<jlong>(s);
+ sk_sp<SkShader> s = SkMakeBitmapShader(bitmap,
+ (SkShader::TileMode)tileModeX,
+ (SkShader::TileMode)tileModeY,
+ nullptr,
+ kNever_SkCopyPixelsMode,
+ nullptr);
+
+ ThrowIAE_IfNull(env, s.get());
+ return reinterpret_cast<jlong>(s.release());
}
///////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index a3c9a3944159..9553ab459b5c 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -26,6 +26,7 @@
#include <SkDrawFilter.h>
#include <SkGraphics.h>
#include <SkImage.h>
+#include <SkImagePriv.h>
#include <SkRSXform.h>
#include <SkShader.h>
#include <SkTemplates.h>
@@ -594,10 +595,13 @@ void SkiaCanvas::drawBitmapMesh(const SkBitmap& bitmap, int meshWidth, int meshH
if (paint) {
tmpPaint = *paint;
}
- SkShader* shader = SkShader::CreateBitmapShader(bitmap,
- SkShader::kClamp_TileMode,
- SkShader::kClamp_TileMode);
- SkSafeUnref(tmpPaint.setShader(shader));
+ sk_sp<SkShader> shader = SkMakeBitmapShader(bitmap,
+ SkShader::kClamp_TileMode,
+ SkShader::kClamp_TileMode,
+ nullptr,
+ kNever_SkCopyPixelsMode,
+ nullptr);
+ tmpPaint.setShader(std::move(shader));
mCanvas->drawVertices(SkCanvas::kTriangles_VertexMode, ptCount, (SkPoint*)vertices,
texs, (const SkColor*)colors, NULL, indices,
diff --git a/libs/hwui/tests/unit/RecordingCanvasTests.cpp b/libs/hwui/tests/unit/RecordingCanvasTests.cpp
index fdf0b547fb54..edc7191459b7 100644
--- a/libs/hwui/tests/unit/RecordingCanvasTests.cpp
+++ b/libs/hwui/tests/unit/RecordingCanvasTests.cpp
@@ -740,10 +740,13 @@ TEST(RecordingCanvas, refBitmapInShader_bitmapShader) {
SkBitmap bitmap = TestUtils::createSkBitmap(100, 100);
auto dl = TestUtils::createDisplayList<RecordingCanvas>(100, 100, [&bitmap](RecordingCanvas& canvas) {
SkPaint paint;
- SkAutoTUnref<SkShader> shader(SkShader::CreateBitmapShader(bitmap,
+ sk_sp<SkShader> shader = SkMakeBitmapShader(bitmap,
SkShader::TileMode::kClamp_TileMode,
- SkShader::TileMode::kClamp_TileMode));
- paint.setShader(shader);
+ SkShader::TileMode::kClamp_TileMode,
+ nullptr,
+ kNever_SkCopyPixelsMode,
+ nullptr);
+ paint.setShader(std::move(shader));
canvas.drawRoundRect(0, 0, 100, 100, 20.0f, 20.0f, paint);
});
auto& bitmaps = dl->getBitmapResources();
@@ -754,21 +757,24 @@ TEST(RecordingCanvas, refBitmapInShader_composeShader) {
SkBitmap bitmap = TestUtils::createSkBitmap(100, 100);
auto dl = TestUtils::createDisplayList<RecordingCanvas>(100, 100, [&bitmap](RecordingCanvas& canvas) {
SkPaint paint;
- SkAutoTUnref<SkShader> shader1(SkShader::CreateBitmapShader(bitmap,
+ sk_sp<SkShader> shader1 = SkMakeBitmapShader(bitmap,
+ SkShader::TileMode::kClamp_TileMode,
SkShader::TileMode::kClamp_TileMode,
- SkShader::TileMode::kClamp_TileMode));
+ nullptr,
+ kNever_SkCopyPixelsMode,
+ nullptr);
SkPoint center;
center.set(50, 50);
SkColor colors[2];
colors[0] = Color::Black;
colors[1] = Color::White;
- SkAutoTUnref<SkShader> shader2(SkGradientShader::CreateRadial(center, 50, colors, nullptr, 2,
- SkShader::TileMode::kRepeat_TileMode));
+ sk_sp<SkShader> shader2 = SkGradientShader::MakeRadial(center, 50, colors, nullptr, 2,
+ SkShader::TileMode::kRepeat_TileMode);
- SkAutoTUnref<SkShader> composeShader(SkShader::CreateComposeShader(shader1, shader2,
- SkXfermode::Mode::kMultiply_Mode));
- paint.setShader(composeShader);
+ sk_sp<SkShader> composeShader = SkShader::MakeComposeShader(std::move(shader1), std::move(shader2),
+ SkXfermode::Mode::kMultiply_Mode);
+ paint.setShader(std::move(composeShader));
canvas.drawRoundRect(0, 0, 100, 100, 20.0f, 20.0f, paint);
});
auto& bitmaps = dl->getBitmapResources();
diff --git a/libs/hwui/tests/unit/SkiaBehaviorTests.cpp b/libs/hwui/tests/unit/SkiaBehaviorTests.cpp
index 158938a85907..a30ada0df453 100644
--- a/libs/hwui/tests/unit/SkiaBehaviorTests.cpp
+++ b/libs/hwui/tests/unit/SkiaBehaviorTests.cpp
@@ -17,8 +17,9 @@
#include "tests/common/TestUtils.h"
#include <gtest/gtest.h>
-#include <SkShader.h>
#include <SkColorMatrixFilter.h>
+#include <SkImagePriv.h>
+#include <SkShader.h>
using namespace android;
using namespace android::uirenderer;
@@ -29,10 +30,13 @@ using namespace android::uirenderer;
*/
TEST(SkiaBehavior, CreateBitmapShader1x1) {
SkBitmap origBitmap = TestUtils::createSkBitmap(1, 1);
- SkAutoTUnref<SkShader> s(SkShader::CreateBitmapShader(
+ sk_sp<SkShader> s = SkMakeBitmapShader(
origBitmap,
SkShader::kClamp_TileMode,
- SkShader::kRepeat_TileMode));
+ SkShader::kRepeat_TileMode,
+ nullptr,
+ kNever_SkCopyPixelsMode,
+ nullptr);
SkBitmap bitmap;
SkShader::TileMode xy[2];