diff options
| author | Romain Guy <romainguy@google.com> | 2010-11-04 12:10:40 -0700 |
|---|---|---|
| committer | Romain Guy <romainguy@google.com> | 2010-11-04 12:10:40 -0700 |
| commit | 1041aded2df45094c36831028245fb7c5e9b67b7 (patch) | |
| tree | f11be43caf8d9f1b63ad9a79aea4e5a8edc03061 /graphics | |
| parent | 617d74ac484ae1b8d9593627f1325ee079d7f223 (diff) | |
| download | frameworks_base-1041aded2df45094c36831028245fb7c5e9b67b7.zip frameworks_base-1041aded2df45094c36831028245fb7c5e9b67b7.tar.gz frameworks_base-1041aded2df45094c36831028245fb7c5e9b67b7.tar.bz2 | |
Fix possible rendering issue when drawing a path.
Change-Id: I25f2e609589f0dd9294bcf7930de6398c0d7e377
Diffstat (limited to 'graphics')
| -rw-r--r-- | graphics/java/android/graphics/drawable/GradientDrawable.java | 15 |
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); |
