Remove SaveFlags from saveLayer(Alpha)
This has been hardcoded as ALL_SAVE_FLAGS for a couple releases now.
Since it's now permanent behavior, remove the last bit of plumbing
for SaveFlags on saveLayer
Test: builds & boots
Change-Id: Iec92f27199d0b4781c2293dcdcfd45a1562a1b4e
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 1dbce58..9a4ed81 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -160,32 +160,20 @@
}
}
-static inline SkCanvas::SaveLayerFlags layerFlags(SaveFlags::Flags flags) {
- SkCanvas::SaveLayerFlags layerFlags = 0;
-
- if (!(flags & SaveFlags::ClipToLayer)) {
- layerFlags |= SkCanvasPriv::kDontClipToLayer_SaveLayerFlag;
- }
-
- return layerFlags;
-}
-
-int SkiaCanvas::saveLayer(float left, float top, float right, float bottom, const SkPaint* paint,
- SaveFlags::Flags flags) {
+int SkiaCanvas::saveLayer(float left, float top, float right, float bottom, const SkPaint* paint) {
const SkRect bounds = SkRect::MakeLTRB(left, top, right, bottom);
- const SkCanvas::SaveLayerRec rec(&bounds, paint, layerFlags(flags));
+ const SkCanvas::SaveLayerRec rec(&bounds, paint);
return mCanvas->saveLayer(rec);
}
-int SkiaCanvas::saveLayerAlpha(float left, float top, float right, float bottom, int alpha,
- SaveFlags::Flags flags) {
+int SkiaCanvas::saveLayerAlpha(float left, float top, float right, float bottom, int alpha) {
if (static_cast<unsigned>(alpha) < 0xFF) {
SkPaint alphaPaint;
alphaPaint.setAlpha(alpha);
- return this->saveLayer(left, top, right, bottom, &alphaPaint, flags);
+ return this->saveLayer(left, top, right, bottom, &alphaPaint);
}
- return this->saveLayer(left, top, right, bottom, nullptr, flags);
+ return this->saveLayer(left, top, right, bottom, nullptr);
}
int SkiaCanvas::saveUnclippedLayer(int left, int top, int right, int bottom) {
diff --git a/libs/hwui/SkiaCanvas.h b/libs/hwui/SkiaCanvas.h
index 2cb850c8..591ae5c 100644
--- a/libs/hwui/SkiaCanvas.h
+++ b/libs/hwui/SkiaCanvas.h
@@ -73,10 +73,8 @@
virtual void restoreToCount(int saveCount) override;
virtual void restoreUnclippedLayer(int saveCount, const SkPaint& paint) override;
- virtual int saveLayer(float left, float top, float right, float bottom, const SkPaint* paint,
- SaveFlags::Flags flags) override;
- virtual int saveLayerAlpha(float left, float top, float right, float bottom, int alpha,
- SaveFlags::Flags flags) override;
+ virtual int saveLayer(float left, float top, float right, float bottom, const SkPaint* paint) override;
+ virtual int saveLayerAlpha(float left, float top, float right, float bottom, int alpha) override;
virtual int saveUnclippedLayer(int left, int top, int right, int bottom) override;
virtual void getMatrix(SkMatrix* outMatrix) const override;
diff --git a/libs/hwui/hwui/Canvas.h b/libs/hwui/hwui/Canvas.h
index 772b7a2..f94bae274 100644
--- a/libs/hwui/hwui/Canvas.h
+++ b/libs/hwui/hwui/Canvas.h
@@ -178,10 +178,8 @@
virtual void restoreToCount(int saveCount) = 0;
virtual void restoreUnclippedLayer(int saveCount, const SkPaint& paint) = 0;
- virtual int saveLayer(float left, float top, float right, float bottom, const SkPaint* paint,
- SaveFlags::Flags flags) = 0;
- virtual int saveLayerAlpha(float left, float top, float right, float bottom, int alpha,
- SaveFlags::Flags flags) = 0;
+ virtual int saveLayer(float left, float top, float right, float bottom, const SkPaint* paint) = 0;
+ virtual int saveLayerAlpha(float left, float top, float right, float bottom, int alpha) = 0;
virtual int saveUnclippedLayer(int, int, int, int) = 0;
// Matrix
diff --git a/libs/hwui/jni/android_graphics_Canvas.cpp b/libs/hwui/jni/android_graphics_Canvas.cpp
index c04340c..89fb8bb 100644
--- a/libs/hwui/jni/android_graphics_Canvas.cpp
+++ b/libs/hwui/jni/android_graphics_Canvas.cpp
@@ -93,16 +93,14 @@
}
static jint saveLayer(CRITICAL_JNI_PARAMS_COMMA jlong canvasHandle, jfloat l, jfloat t,
- jfloat r, jfloat b, jlong paintHandle, jint flagsHandle) {
+ jfloat r, jfloat b, jlong paintHandle) {
Paint* paint = reinterpret_cast<Paint*>(paintHandle);
- SaveFlags::Flags flags = static_cast<SaveFlags::Flags>(flagsHandle);
- return static_cast<jint>(get_canvas(canvasHandle)->saveLayer(l, t, r, b, paint, flags));
+ return static_cast<jint>(get_canvas(canvasHandle)->saveLayer(l, t, r, b, paint));
}
static jint saveLayerAlpha(CRITICAL_JNI_PARAMS_COMMA jlong canvasHandle, jfloat l, jfloat t,
- jfloat r, jfloat b, jint alpha, jint flagsHandle) {
- SaveFlags::Flags flags = static_cast<SaveFlags::Flags>(flagsHandle);
- return static_cast<jint>(get_canvas(canvasHandle)->saveLayerAlpha(l, t, r, b, alpha, flags));
+ jfloat r, jfloat b, jint alpha) {
+ return static_cast<jint>(get_canvas(canvasHandle)->saveLayerAlpha(l, t, r, b, alpha));
}
static jint saveUnclippedLayer(CRITICAL_JNI_PARAMS_COMMA jlong canvasHandle, jint l, jint t, jint r, jint b) {
@@ -688,8 +686,8 @@
{"nGetWidth","(J)I", (void*) CanvasJNI::getWidth},
{"nGetHeight","(J)I", (void*) CanvasJNI::getHeight},
{"nSave","(JI)I", (void*) CanvasJNI::save},
- {"nSaveLayer","(JFFFFJI)I", (void*) CanvasJNI::saveLayer},
- {"nSaveLayerAlpha","(JFFFFII)I", (void*) CanvasJNI::saveLayerAlpha},
+ {"nSaveLayer","(JFFFFJ)I", (void*) CanvasJNI::saveLayer},
+ {"nSaveLayerAlpha","(JFFFFI)I", (void*) CanvasJNI::saveLayerAlpha},
{"nSaveUnclippedLayer","(JIIII)I", (void*) CanvasJNI::saveUnclippedLayer},
{"nRestoreUnclippedLayer","(JIJ)V", (void*) CanvasJNI::restoreUnclippedLayer},
{"nGetSaveCount","(J)I", (void*) CanvasJNI::getSaveCount},
diff --git a/libs/hwui/tests/common/scenes/ListOfFadedTextAnimation.cpp b/libs/hwui/tests/common/scenes/ListOfFadedTextAnimation.cpp
index a9449b6..5eaf185 100644
--- a/libs/hwui/tests/common/scenes/ListOfFadedTextAnimation.cpp
+++ b/libs/hwui/tests/common/scenes/ListOfFadedTextAnimation.cpp
@@ -32,7 +32,7 @@
int itemHeight) override {
canvas.drawColor(Color::White, SkBlendMode::kSrcOver);
int length = dp(100);
- canvas.saveLayer(0, 0, length, itemHeight, nullptr, SaveFlags::HasAlphaLayer);
+ canvas.saveLayer(0, 0, length, itemHeight, nullptr);
Paint textPaint;
textPaint.getSkFont().setSize(dp(20));
textPaint.setAntiAlias(true);
diff --git a/libs/hwui/tests/common/scenes/SaveLayer2Animation.cpp b/libs/hwui/tests/common/scenes/SaveLayer2Animation.cpp
index 8630be8..252f539 100644
--- a/libs/hwui/tests/common/scenes/SaveLayer2Animation.cpp
+++ b/libs/hwui/tests/common/scenes/SaveLayer2Animation.cpp
@@ -47,8 +47,7 @@
// interleave drawText and drawRect with saveLayer ops
for (int i = 0; i < regions; i++, top += smallRectHeight) {
- canvas.saveLayer(bounds.fLeft, top, bounds.fRight, top + padding, &mBluePaint,
- SaveFlags::ClipToLayer | SaveFlags::MatrixClip);
+ canvas.saveLayer(bounds.fLeft, top, bounds.fRight, top + padding, &mBluePaint);
canvas.drawColor(SkColorSetARGB(255, 255, 255, 0), SkBlendMode::kSrcOver);
std::string stri = std::to_string(i);
std::string offscreen = "offscreen line " + stri;
diff --git a/libs/hwui/tests/common/scenes/SaveLayerAnimation.cpp b/libs/hwui/tests/common/scenes/SaveLayerAnimation.cpp
index 97bfba3..10ba079 100644
--- a/libs/hwui/tests/common/scenes/SaveLayerAnimation.cpp
+++ b/libs/hwui/tests/common/scenes/SaveLayerAnimation.cpp
@@ -33,10 +33,10 @@
card = TestUtils::createNode(0, 0, 400, 800, [](RenderProperties& props, Canvas& canvas) {
// nested clipped saveLayers
- canvas.saveLayerAlpha(0, 0, 400, 400, 200, SaveFlags::ClipToLayer);
+ canvas.saveLayerAlpha(0, 0, 400, 400, 200);
canvas.drawColor(Color::Green_700, SkBlendMode::kSrcOver);
canvas.clipRect(50, 50, 350, 350, SkClipOp::kIntersect);
- canvas.saveLayerAlpha(100, 100, 300, 300, 128, SaveFlags::ClipToLayer);
+ canvas.saveLayerAlpha(100, 100, 300, 300, 128);
canvas.drawColor(Color::Blue_500, SkBlendMode::kSrcOver);
canvas.restore();
canvas.restore();
@@ -44,12 +44,14 @@
// single unclipped saveLayer
canvas.save(SaveFlags::MatrixClip);
canvas.translate(0, 400);
- canvas.saveLayerAlpha(100, 100, 300, 300, 128, SaveFlags::Flags(0)); // unclipped
+ int unclippedSaveLayer = canvas.saveUnclippedLayer(100, 100, 300, 300);
Paint paint;
paint.setAntiAlias(true);
paint.setColor(Color::Green_700);
canvas.drawCircle(200, 200, 200, paint);
- canvas.restore();
+ SkPaint alphaPaint;
+ alphaPaint.setAlpha(128);
+ canvas.restoreUnclippedLayer(unclippedSaveLayer, alphaPaint);
canvas.restore();
});
diff --git a/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp b/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp
index 7aa6be8..abdf9d5 100644
--- a/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp
+++ b/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp
@@ -198,7 +198,7 @@
EXPECT_TRUE(getRecorderMatrix(recorder).isIdentity());
// note we don't pass SaveFlags::MatrixClip, but matrix and clip will be saved
- recorder.saveLayer(0, 0, 400, 400, &layerPaint, SaveFlags::ClipToLayer);
+ recorder.saveLayer(0, 0, 400, 400, &layerPaint);
ASSERT_EQ(SkRect::MakeLTRB(0, 0, 400, 400), getRecorderClipBounds(recorder));
EXPECT_TRUE(getRecorderMatrix(recorder).isIdentity());