Skip to content

Commit 765dcf3

Browse files
author
Romain Guy
committed
Small optimization for the battery status screen
Change-Id: I2833ba4009f6c284c9ef33c45a4dd7365423fb5f
1 parent 35ae6e2 commit 765dcf3

File tree

1 file changed

+33
-8
lines changed

1 file changed

+33
-8
lines changed

core/java/android/view/GLES20Canvas.java

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,7 @@ public DrawFilter getDrawFilter() {
718718
@Override
719719
public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter,
720720
Paint paint) {
721-
int modifiers = setupModifiers(paint);
721+
int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER);
722722
try {
723723
nDrawArc(mRenderer, oval.left, oval.top, oval.right, oval.bottom,
724724
startAngle, sweepAngle, useCenter, paint.mNativePaint);
@@ -902,7 +902,7 @@ private static native void nDrawBitmapMesh(int renderer, int bitmap, byte[] buff
902902

903903
@Override
904904
public void drawCircle(float cx, float cy, float radius, Paint paint) {
905-
int modifiers = setupModifiers(paint);
905+
int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER);
906906
try {
907907
nDrawCircle(mRenderer, cx, cy, radius, paint.mNativePaint);
908908
} finally {
@@ -939,7 +939,7 @@ public void drawLines(float[] pts, int offset, int count, Paint paint) {
939939
if ((offset | count) < 0 || offset + count > pts.length) {
940940
throw new IllegalArgumentException("The lines array must contain 4 elements per line.");
941941
}
942-
int modifiers = setupModifiers(paint);
942+
int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER);
943943
try {
944944
nDrawLines(mRenderer, pts, offset, count, paint.mNativePaint);
945945
} finally {
@@ -957,7 +957,7 @@ public void drawLines(float[] pts, Paint paint) {
957957

958958
@Override
959959
public void drawOval(RectF oval, Paint paint) {
960-
int modifiers = setupModifiers(paint);
960+
int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER);
961961
try {
962962
nDrawOval(mRenderer, oval.left, oval.top, oval.right, oval.bottom, paint.mNativePaint);
963963
} finally {
@@ -977,7 +977,7 @@ public void drawPaint(Paint paint) {
977977

978978
@Override
979979
public void drawPath(Path path, Paint paint) {
980-
int modifiers = setupModifiers(paint);
980+
int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER);
981981
try {
982982
if (path.isSimplePath) {
983983
if (path.rects != null) {
@@ -1048,7 +1048,7 @@ public void drawPoints(float[] pts, Paint paint) {
10481048

10491049
@Override
10501050
public void drawPoints(float[] pts, int offset, int count, Paint paint) {
1051-
int modifiers = setupModifiers(paint);
1051+
int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER);
10521052
try {
10531053
nDrawPoints(mRenderer, pts, offset, count, paint.mNativePaint);
10541054
} finally {
@@ -1097,7 +1097,8 @@ private static native void nDrawPosText(int renderer, String text, int start, in
10971097

10981098
@Override
10991099
public void drawRect(float left, float top, float right, float bottom, Paint paint) {
1100-
int modifiers = setupModifiers(paint);
1100+
if (left == right || top == bottom) return;
1101+
int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER);
11011102
try {
11021103
nDrawRect(mRenderer, left, top, right, bottom, paint.mNativePaint);
11031104
} finally {
@@ -1125,7 +1126,7 @@ public void drawRGB(int r, int g, int b) {
11251126

11261127
@Override
11271128
public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) {
1128-
int modifiers = setupModifiers(paint);
1129+
int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER);
11291130
try {
11301131
nDrawRoundRect(mRenderer, rect.left, rect.top, rect.right, rect.bottom,
11311132
rx, ry, paint.mNativePaint);
@@ -1341,6 +1342,30 @@ private int setupModifiers(Paint paint) {
13411342
return modifiers;
13421343
}
13431344

1345+
private int setupModifiers(Paint paint, int flags) {
1346+
int modifiers = MODIFIER_NONE;
1347+
1348+
if (paint.hasShadow && (flags & MODIFIER_SHADOW) != 0) {
1349+
nSetupShadow(mRenderer, paint.shadowRadius, paint.shadowDx, paint.shadowDy,
1350+
paint.shadowColor);
1351+
modifiers |= MODIFIER_SHADOW;
1352+
}
1353+
1354+
final Shader shader = paint.getShader();
1355+
if (shader != null && (flags & MODIFIER_SHADER) != 0) {
1356+
nSetupShader(mRenderer, shader.native_shader);
1357+
modifiers |= MODIFIER_SHADER;
1358+
}
1359+
1360+
final ColorFilter filter = paint.getColorFilter();
1361+
if (filter != null && (flags & MODIFIER_COLOR_FILTER) != 0) {
1362+
nSetupColorFilter(mRenderer, filter.nativeColorFilter);
1363+
modifiers |= MODIFIER_COLOR_FILTER;
1364+
}
1365+
1366+
return modifiers;
1367+
}
1368+
13441369
private int setupColorFilter(Paint paint) {
13451370
final ColorFilter filter = paint.getColorFilter();
13461371
if (filter != null) {

0 commit comments

Comments
 (0)