summaryrefslogtreecommitdiffstats
path: root/graphics/java/android
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2010-11-04 12:14:37 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-11-04 12:14:37 -0700
commit8ad4b47920a88c6317c270514f0ce7b0b053d0a4 (patch)
tree0041279cdf101721ad27afed3d60d646c4951a89 /graphics/java/android
parentb52907f6be7edb3a8b709348af484dd7d646b13e (diff)
parent1041aded2df45094c36831028245fb7c5e9b67b7 (diff)
downloadframeworks_base-8ad4b47920a88c6317c270514f0ce7b0b053d0a4.zip
frameworks_base-8ad4b47920a88c6317c270514f0ce7b0b053d0a4.tar.gz
frameworks_base-8ad4b47920a88c6317c270514f0ce7b0b053d0a4.tar.bz2
Merge "Fix possible rendering issue when drawing a path."
Diffstat (limited to 'graphics/java/android')
-rw-r--r--graphics/java/android/graphics/drawable/GradientDrawable.java15
1 files changed, 11 insertions, 4 deletions
diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java
index 88f6d43..c558632 100644
--- a/graphics/java/android/graphics/drawable/GradientDrawable.java
+++ b/graphics/java/android/graphics/drawable/GradientDrawable.java
@@ -126,7 +126,7 @@ public class GradientDrawable extends Drawable {
private boolean mRectIsDirty; // internal state
private boolean mMutated;
private Path mRingPath;
- private boolean mPathIsDirty;
+ private boolean mPathIsDirty = true;
/**
* Controls how the gradient is oriented relative to the drawable's bounds
@@ -179,6 +179,7 @@ public class GradientDrawable extends Drawable {
*/
public void setCornerRadii(float[] radii) {
mGradientState.setCornerRadii(radii);
+ mPathIsDirty = true;
}
/**
@@ -187,6 +188,7 @@ public class GradientDrawable extends Drawable {
*/
public void setCornerRadius(float radius) {
mGradientState.setCornerRadius(radius);
+ mPathIsDirty = true;
}
/**
@@ -215,11 +217,13 @@ public class GradientDrawable extends Drawable {
}
public void setSize(int width, int height) {
- mGradientState.setSize(width, height);
+ mGradientState.setSize(width, height);
+ mPathIsDirty = true;
}
public void setShape(int shape) {
mRingPath = null;
+ mPathIsDirty = true;
mGradientState.setShape(shape);
}
@@ -312,8 +316,11 @@ public class GradientDrawable extends Drawable {
switch (st.mShape) {
case RECTANGLE:
if (st.mRadiusArray != null) {
- mPath.reset();
- mPath.addRoundRect(mRect, st.mRadiusArray, Path.Direction.CW);
+ if (mPathIsDirty || mRectIsDirty) {
+ mPath.reset();
+ mPath.addRoundRect(mRect, st.mRadiusArray, Path.Direction.CW);
+ mPathIsDirty = mRectIsDirty = false;
+ }
canvas.drawPath(mPath, mFillPaint);
if (haveStroke) {
canvas.drawPath(mPath, mStrokePaint);