From a6a8557d6e6c8ecc170767b7552979dbdb4254ef Mon Sep 17 00:00:00 2001 From: sergeyv Date: Wed, 27 Jul 2016 14:13:34 -0700 Subject: [PATCH] Turn off simplePath optimization then Path object is used as out param Change-Id: I4d9ae5c756b2ed1ba30483e8685ce1ad6c1f0c03 fixes:30349106 --- graphics/java/android/graphics/Canvas.java | 10 +++++----- graphics/java/android/graphics/Paint.java | 6 +++--- graphics/java/android/graphics/Path.java | 7 ++++++- graphics/java/android/graphics/PathDashPathEffect.java | 2 +- graphics/java/android/graphics/PathMeasure.java | 7 +++---- graphics/java/android/graphics/Region.java | 6 +++--- 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java index cb6c92e87172..40b877de131c 100644 --- a/graphics/java/android/graphics/Canvas.java +++ b/graphics/java/android/graphics/Canvas.java @@ -788,7 +788,7 @@ public class Canvas { * @return true if the resulting is non-empty */ public boolean clipPath(@NonNull Path path, @NonNull Region.Op op) { - return native_clipPath(mNativeCanvasWrapper, path.ni(), op.nativeInt); + return native_clipPath(mNativeCanvasWrapper, path.readOnlyNI(), op.nativeInt); } /** @@ -907,7 +907,7 @@ public class Canvas { * does not intersect with the canvas' clip */ public boolean quickReject(@NonNull Path path, @NonNull EdgeType type) { - return native_quickReject(mNativeCanvasWrapper, path.ni()); + return native_quickReject(mNativeCanvasWrapper, path.readOnlyNI()); } /** @@ -1259,7 +1259,7 @@ public class Canvas { if (path.isSimplePath && path.rects != null) { native_drawRegion(mNativeCanvasWrapper, path.rects.mNativeRegion, paint.getNativeInstance()); } else { - native_drawPath(mNativeCanvasWrapper, path.ni(), paint.getNativeInstance()); + native_drawPath(mNativeCanvasWrapper, path.readOnlyNI(), paint.getNativeInstance()); } } @@ -1895,7 +1895,7 @@ public class Canvas { throw new ArrayIndexOutOfBoundsException(); } native_drawTextOnPath(mNativeCanvasWrapper, text, index, count, - path.ni(), hOffset, vOffset, + path.readOnlyNI(), hOffset, vOffset, paint.mBidiFlags, paint.getNativeInstance(), paint.mNativeTypeface); } @@ -1915,7 +1915,7 @@ public class Canvas { public void drawTextOnPath(@NonNull String text, @NonNull Path path, float hOffset, float vOffset, @NonNull Paint paint) { if (text.length() > 0) { - native_drawTextOnPath(mNativeCanvasWrapper, text, path.ni(), hOffset, vOffset, + native_drawTextOnPath(mNativeCanvasWrapper, text, path.readOnlyNI(), hOffset, vOffset, paint.mBidiFlags, paint.getNativeInstance(), paint.mNativeTypeface); } } diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java index 054e29fd9ff4..cfbe672a4cd6 100644 --- a/graphics/java/android/graphics/Paint.java +++ b/graphics/java/android/graphics/Paint.java @@ -1021,7 +1021,7 @@ public class Paint { * drawn with a hairline (width == 0) */ public boolean getFillPath(Path src, Path dst) { - return nGetFillPath(mNativePaint, src.ni(), dst.ni()); + return nGetFillPath(mNativePaint, src.readOnlyNI(), dst.mutateNI()); } /** @@ -2394,7 +2394,7 @@ public class Paint { throw new ArrayIndexOutOfBoundsException(); } nGetTextPath(mNativePaint, mNativeTypeface, mBidiFlags, text, index, count, x, y, - path.ni()); + path.mutateNI()); } /** @@ -2416,7 +2416,7 @@ public class Paint { throw new IndexOutOfBoundsException(); } nGetTextPath(mNativePaint, mNativeTypeface, mBidiFlags, text, start, end, x, y, - path.ni()); + path.mutateNI()); } /** diff --git a/graphics/java/android/graphics/Path.java b/graphics/java/android/graphics/Path.java index de391af5d4ce..be31bbe0c086 100644 --- a/graphics/java/android/graphics/Path.java +++ b/graphics/java/android/graphics/Path.java @@ -775,7 +775,12 @@ public class Path { } } - final long ni() { + final long readOnlyNI() { + return mNativePath; + } + + final long mutateNI() { + isSimplePath = false; return mNativePath; } diff --git a/graphics/java/android/graphics/PathDashPathEffect.java b/graphics/java/android/graphics/PathDashPathEffect.java index 4f43f680ff3e..2b6a6edcc266 100644 --- a/graphics/java/android/graphics/PathDashPathEffect.java +++ b/graphics/java/android/graphics/PathDashPathEffect.java @@ -41,7 +41,7 @@ public class PathDashPathEffect extends PathEffect { */ public PathDashPathEffect(Path shape, float advance, float phase, Style style) { - native_instance = nativeCreate(shape.ni(), advance, phase, + native_instance = nativeCreate(shape.readOnlyNI(), advance, phase, style.native_style); } diff --git a/graphics/java/android/graphics/PathMeasure.java b/graphics/java/android/graphics/PathMeasure.java index 2848949eb72f..78d892e94cf0 100644 --- a/graphics/java/android/graphics/PathMeasure.java +++ b/graphics/java/android/graphics/PathMeasure.java @@ -50,7 +50,7 @@ public class PathMeasure { public PathMeasure(Path path, boolean forceClosed) { // The native implementation does not copy the path, prevent it from being GC'd mPath = path; - native_instance = native_create(path != null ? path.ni() : 0, + native_instance = native_create(path != null ? path.readOnlyNI() : 0, forceClosed); } @@ -60,7 +60,7 @@ public class PathMeasure { public void setPath(Path path, boolean forceClosed) { mPath = path; native_setPath(native_instance, - path != null ? path.ni() : 0, + path != null ? path.readOnlyNI() : 0, forceClosed); } @@ -134,8 +134,7 @@ public class PathMeasure { return false; } - dst.isSimplePath = false; - return native_getSegment(native_instance, startD, stopD, dst.ni(), startWithMoveTo); + return native_getSegment(native_instance, startD, stopD, dst.mutateNI(), startWithMoveTo); } /** diff --git a/graphics/java/android/graphics/Region.java b/graphics/java/android/graphics/Region.java index de89ad07d873..dca6d9ed3b2f 100644 --- a/graphics/java/android/graphics/Region.java +++ b/graphics/java/android/graphics/Region.java @@ -110,7 +110,7 @@ public class Region implements Parcelable { * (with no antialiasing). */ public boolean setPath(Path path, Region clip) { - return nativeSetPath(mNativeRegion, path.ni(), clip.mNativeRegion); + return nativeSetPath(mNativeRegion, path.readOnlyNI(), clip.mNativeRegion); } /** @@ -155,7 +155,7 @@ public class Region implements Parcelable { */ public Path getBoundaryPath() { Path path = new Path(); - nativeGetBoundaryPath(mNativeRegion, path.ni()); + nativeGetBoundaryPath(mNativeRegion, path.mutateNI()); return path; } @@ -164,7 +164,7 @@ public class Region implements Parcelable { * path will also be empty. */ public boolean getBoundaryPath(Path path) { - return nativeGetBoundaryPath(mNativeRegion, path.ni()); + return nativeGetBoundaryPath(mNativeRegion, path.mutateNI()); } /** -- 2.11.0