Loading core/java/android/view/DisplayListCanvas.java +0 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,6 @@ public class DisplayListCanvas extends Canvas { private int mWidth; private int mHeight; static DisplayListCanvas obtain(@NonNull RenderNode node) { if (node == null) throw new IllegalArgumentException("node cannot be null"); DisplayListCanvas canvas = sPool.acquire(); Loading core/java/android/view/RenderNode.java +1 −6 Original line number Diff line number Diff line Loading @@ -240,12 +240,7 @@ public class RenderNode { * @see #start(int, int) * @see #isValid() */ public void end(DisplayListCanvas endCanvas) { if (!(endCanvas instanceof DisplayListCanvas)) { throw new IllegalArgumentException("Passed an invalid canvas to end!"); } DisplayListCanvas canvas = (DisplayListCanvas) endCanvas; public void end(DisplayListCanvas canvas) { canvas.onPostDraw(); long renderNodeData = canvas.finishRecording(); nSetDisplayListData(mNativeRenderNode, renderNodeData); Loading core/java/android/view/View.java +2 −0 Original line number Diff line number Diff line Loading @@ -3583,6 +3583,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // of whether a layout was requested on that View. sIgnoreMeasureCache = targetSdkVersion < KITKAT; Canvas.sCompatibilityRestore = targetSdkVersion < MNC; sCompatibilityDone = true; } } Loading core/jni/android_graphics_Canvas.cpp +14 −8 Original line number Diff line number Diff line Loading @@ -86,21 +86,27 @@ static jint saveLayerAlpha(JNIEnv* env, jobject, jlong canvasHandle, jfloat l, j return static_cast<jint>(get_canvas(canvasHandle)->saveLayerAlpha(l, t, r, b, alpha, flags)); } static void restore(JNIEnv* env, jobject, jlong canvasHandle) { static void restore(JNIEnv* env, jobject, jlong canvasHandle, jboolean throwOnUnderflow) { Canvas* canvas = get_canvas(canvasHandle); if (canvas->getSaveCount() <= 1) { // cannot restore anymore if (throwOnUnderflow) { doThrowISE(env, "Underflow in restore - more restores than saves"); return; } return; // compat behavior - return without throwing } canvas->restore(); } static void restoreToCount(JNIEnv* env, jobject, jlong canvasHandle, jint restoreCount) { static void restoreToCount(JNIEnv* env, jobject, jlong canvasHandle, jint restoreCount, jboolean throwOnUnderflow) { Canvas* canvas = get_canvas(canvasHandle); if (restoreCount < 1 || restoreCount > canvas->getSaveCount()) { if (throwOnUnderflow) { doThrowIAE(env, "Underflow in restoreToCount - more restores than saves"); return; } restoreCount = 1; // compat behavior - restore as far as possible } canvas->restoreToCount(restoreCount); } Loading Loading @@ -661,8 +667,8 @@ static JNINativeMethod gMethods[] = { {"native_saveLayer","(JFFFFJI)I", (void*) CanvasJNI::saveLayer}, {"native_saveLayerAlpha","(JFFFFII)I", (void*) CanvasJNI::saveLayerAlpha}, {"native_getSaveCount","(J)I", (void*) CanvasJNI::getSaveCount}, {"native_restore","(J)V", (void*) CanvasJNI::restore}, {"native_restoreToCount","(JI)V", (void*) CanvasJNI::restoreToCount}, {"native_restore","(JZ)V", (void*) CanvasJNI::restore}, {"native_restoreToCount","(JIZ)V", (void*) CanvasJNI::restoreToCount}, {"native_getCTM", "(JJ)V", (void*)CanvasJNI::getCTM}, {"native_setMatrix","(JJ)V", (void*) CanvasJNI::setMatrix}, {"native_concat","(JJ)V", (void*) CanvasJNI::concat}, Loading graphics/java/android/graphics/Canvas.java +9 −4 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ import javax.microedition.khronos.opengles.GL; * Canvas and Drawables</a> developer guide.</p></div> */ public class Canvas { /** @hide */ public static boolean sCompatibilityRestore = false; /** * Should only be assigned in constructors (or setBitmap if software canvas), Loading Loading @@ -557,7 +559,8 @@ public class Canvas { * an error to call restore() more times than save() was called. */ public void restore() { native_restore(mNativeCanvasWrapper); boolean throwOnUnderflow = !sCompatibilityRestore || !isHardwareAccelerated(); native_restore(mNativeCanvasWrapper, throwOnUnderflow); } /** Loading @@ -582,7 +585,8 @@ public class Canvas { * @param saveCount The save level to restore to. */ public void restoreToCount(int saveCount) { native_restoreToCount(mNativeCanvasWrapper, saveCount); boolean throwOnUnderflow = !sCompatibilityRestore || !isHardwareAccelerated(); native_restoreToCount(mNativeCanvasWrapper, saveCount, throwOnUnderflow); } /** Loading Loading @@ -1988,9 +1992,10 @@ public class Canvas { private static native int native_saveLayerAlpha(long nativeCanvas, float l, float t, float r, float b, int alpha, int layerFlags); private static native void native_restore(long canvasHandle); private static native void native_restore(long canvasHandle, boolean tolerateUnderflow); private static native void native_restoreToCount(long canvasHandle, int saveCount); int saveCount, boolean tolerateUnderflow); private static native int native_getSaveCount(long canvasHandle); private static native void native_translate(long canvasHandle, Loading Loading
core/java/android/view/DisplayListCanvas.java +0 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,6 @@ public class DisplayListCanvas extends Canvas { private int mWidth; private int mHeight; static DisplayListCanvas obtain(@NonNull RenderNode node) { if (node == null) throw new IllegalArgumentException("node cannot be null"); DisplayListCanvas canvas = sPool.acquire(); Loading
core/java/android/view/RenderNode.java +1 −6 Original line number Diff line number Diff line Loading @@ -240,12 +240,7 @@ public class RenderNode { * @see #start(int, int) * @see #isValid() */ public void end(DisplayListCanvas endCanvas) { if (!(endCanvas instanceof DisplayListCanvas)) { throw new IllegalArgumentException("Passed an invalid canvas to end!"); } DisplayListCanvas canvas = (DisplayListCanvas) endCanvas; public void end(DisplayListCanvas canvas) { canvas.onPostDraw(); long renderNodeData = canvas.finishRecording(); nSetDisplayListData(mNativeRenderNode, renderNodeData); Loading
core/java/android/view/View.java +2 −0 Original line number Diff line number Diff line Loading @@ -3583,6 +3583,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // of whether a layout was requested on that View. sIgnoreMeasureCache = targetSdkVersion < KITKAT; Canvas.sCompatibilityRestore = targetSdkVersion < MNC; sCompatibilityDone = true; } } Loading
core/jni/android_graphics_Canvas.cpp +14 −8 Original line number Diff line number Diff line Loading @@ -86,21 +86,27 @@ static jint saveLayerAlpha(JNIEnv* env, jobject, jlong canvasHandle, jfloat l, j return static_cast<jint>(get_canvas(canvasHandle)->saveLayerAlpha(l, t, r, b, alpha, flags)); } static void restore(JNIEnv* env, jobject, jlong canvasHandle) { static void restore(JNIEnv* env, jobject, jlong canvasHandle, jboolean throwOnUnderflow) { Canvas* canvas = get_canvas(canvasHandle); if (canvas->getSaveCount() <= 1) { // cannot restore anymore if (throwOnUnderflow) { doThrowISE(env, "Underflow in restore - more restores than saves"); return; } return; // compat behavior - return without throwing } canvas->restore(); } static void restoreToCount(JNIEnv* env, jobject, jlong canvasHandle, jint restoreCount) { static void restoreToCount(JNIEnv* env, jobject, jlong canvasHandle, jint restoreCount, jboolean throwOnUnderflow) { Canvas* canvas = get_canvas(canvasHandle); if (restoreCount < 1 || restoreCount > canvas->getSaveCount()) { if (throwOnUnderflow) { doThrowIAE(env, "Underflow in restoreToCount - more restores than saves"); return; } restoreCount = 1; // compat behavior - restore as far as possible } canvas->restoreToCount(restoreCount); } Loading Loading @@ -661,8 +667,8 @@ static JNINativeMethod gMethods[] = { {"native_saveLayer","(JFFFFJI)I", (void*) CanvasJNI::saveLayer}, {"native_saveLayerAlpha","(JFFFFII)I", (void*) CanvasJNI::saveLayerAlpha}, {"native_getSaveCount","(J)I", (void*) CanvasJNI::getSaveCount}, {"native_restore","(J)V", (void*) CanvasJNI::restore}, {"native_restoreToCount","(JI)V", (void*) CanvasJNI::restoreToCount}, {"native_restore","(JZ)V", (void*) CanvasJNI::restore}, {"native_restoreToCount","(JIZ)V", (void*) CanvasJNI::restoreToCount}, {"native_getCTM", "(JJ)V", (void*)CanvasJNI::getCTM}, {"native_setMatrix","(JJ)V", (void*) CanvasJNI::setMatrix}, {"native_concat","(JJ)V", (void*) CanvasJNI::concat}, Loading
graphics/java/android/graphics/Canvas.java +9 −4 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ import javax.microedition.khronos.opengles.GL; * Canvas and Drawables</a> developer guide.</p></div> */ public class Canvas { /** @hide */ public static boolean sCompatibilityRestore = false; /** * Should only be assigned in constructors (or setBitmap if software canvas), Loading Loading @@ -557,7 +559,8 @@ public class Canvas { * an error to call restore() more times than save() was called. */ public void restore() { native_restore(mNativeCanvasWrapper); boolean throwOnUnderflow = !sCompatibilityRestore || !isHardwareAccelerated(); native_restore(mNativeCanvasWrapper, throwOnUnderflow); } /** Loading @@ -582,7 +585,8 @@ public class Canvas { * @param saveCount The save level to restore to. */ public void restoreToCount(int saveCount) { native_restoreToCount(mNativeCanvasWrapper, saveCount); boolean throwOnUnderflow = !sCompatibilityRestore || !isHardwareAccelerated(); native_restoreToCount(mNativeCanvasWrapper, saveCount, throwOnUnderflow); } /** Loading Loading @@ -1988,9 +1992,10 @@ public class Canvas { private static native int native_saveLayerAlpha(long nativeCanvas, float l, float t, float r, float b, int alpha, int layerFlags); private static native void native_restore(long canvasHandle); private static native void native_restore(long canvasHandle, boolean tolerateUnderflow); private static native void native_restoreToCount(long canvasHandle, int saveCount); int saveCount, boolean tolerateUnderflow); private static native int native_getSaveCount(long canvasHandle); private static native void native_translate(long canvasHandle, Loading