diff options
| author | Romain Guy <romainguy@google.com> | 2010-11-04 12:14:37 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-11-04 12:14:37 -0700 |
| commit | 8ad4b47920a88c6317c270514f0ce7b0b053d0a4 (patch) | |
| tree | 0041279cdf101721ad27afed3d60d646c4951a89 /graphics | |
| parent | b52907f6be7edb3a8b709348af484dd7d646b13e (diff) | |
| parent | 1041aded2df45094c36831028245fb7c5e9b67b7 (diff) | |
| download | frameworks_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')
| -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); |
