Loading core/java/android/view/GLES20Canvas.java +44 −16 Original line number Diff line number Diff line Loading @@ -59,11 +59,11 @@ class GLES20Canvas extends HardwareCanvas { private int mWidth; private int mHeight; private final float[] mPoint = new float[2]; private final float[] mLine = new float[4]; private float[] mPoint; private float[] mLine; private final Rect mClipBounds = new Rect(); private final RectF mPathBounds = new RectF(); private Rect mClipBounds; private RectF mPathBounds; private DrawFilter mFilter; Loading Loading @@ -442,6 +442,31 @@ class GLES20Canvas extends HardwareCanvas { private static native void nInterrupt(int renderer); private static native void nResume(int renderer); /////////////////////////////////////////////////////////////////////////// // Support /////////////////////////////////////////////////////////////////////////// private Rect getInternalClipBounds() { if (mClipBounds == null) mClipBounds = new Rect(); return mClipBounds; } private RectF getPathBounds() { if (mPathBounds == null) mPathBounds = new RectF(); return mPathBounds; } private float[] getPointStorage() { if (mPoint == null) mPoint = new float[2]; return mPoint; } private float[] getLineStorage() { if (mLine == null) mLine = new float[4]; return mLine; } /////////////////////////////////////////////////////////////////////////// // Clipping /////////////////////////////////////////////////////////////////////////// Loading Loading @@ -530,9 +555,10 @@ class GLES20Canvas extends HardwareCanvas { @Override public boolean quickReject(Path path, EdgeType type) { path.computeBounds(mPathBounds, true); return nQuickReject(mRenderer, mPathBounds.left, mPathBounds.top, mPathBounds.right, mPathBounds.bottom); RectF pathBounds = getPathBounds(); path.computeBounds(pathBounds, true); return nQuickReject(mRenderer, pathBounds.left, pathBounds.top, pathBounds.right, pathBounds.bottom); } @Override Loading Loading @@ -967,11 +993,12 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) { mLine[0] = startX; mLine[1] = startY; mLine[2] = stopX; mLine[3] = stopY; drawLines(mLine, 0, 4, paint); float[] line = getLineStorage(); line[0] = startX; line[1] = startY; line[2] = stopX; line[3] = stopY; drawLines(line, 0, 4, paint); } @Override Loading Loading @@ -1012,7 +1039,7 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawPaint(Paint paint) { final Rect r = mClipBounds; final Rect r = getInternalClipBounds(); nGetClipBounds(mRenderer, r); drawRect(r.left, r.top, r.right, r.bottom, paint); } Loading Loading @@ -1089,9 +1116,10 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawPoint(float x, float y, Paint paint) { mPoint[0] = x; mPoint[1] = y; drawPoints(mPoint, 0, 2, paint); float[] point = getPointStorage(); point[0] = x; point[1] = y; drawPoints(point, 0, 2, paint); } @Override Loading core/java/android/view/GLES20DisplayList.java +21 −6 Original line number Diff line number Diff line Loading @@ -30,9 +30,9 @@ class GLES20DisplayList extends DisplayList { // alive as long as the DisplayList is alive. The Bitmap and DisplayList lists // are populated by the GLES20RecordingCanvas during appropriate drawing calls and are // cleared at the start of a new drawing frame or when the view is detached from the window. final ArrayList<Bitmap> mBitmaps = new ArrayList<Bitmap>(10); final ArrayList<NinePatch> mNinePatches = new ArrayList<NinePatch>(10); final ArrayList<DisplayList> mChildDisplayLists = new ArrayList<DisplayList>(); private ArrayList<Bitmap> mBitmaps; private ArrayList<NinePatch> mNinePatches; private ArrayList<DisplayList> mChildDisplayLists; private GLES20RecordingCanvas mCanvas; private boolean mValid; Loading Loading @@ -89,9 +89,24 @@ class GLES20DisplayList extends DisplayList { } void clearReferences() { mBitmaps.clear(); mNinePatches.clear(); mChildDisplayLists.clear(); if (mBitmaps != null) mBitmaps.clear(); if (mNinePatches != null) mNinePatches.clear(); if (mChildDisplayLists != null) mChildDisplayLists.clear(); } ArrayList<Bitmap> getBitmaps() { if (mBitmaps == null) mBitmaps = new ArrayList<Bitmap>(5); return mBitmaps; } ArrayList<NinePatch> getNinePatches() { if (mNinePatches == null) mNinePatches = new ArrayList<NinePatch>(5); return mNinePatches; } ArrayList<DisplayList> getChildDisplayLists() { if (mChildDisplayLists == null) mChildDisplayLists = new ArrayList<DisplayList>(); return mChildDisplayLists; } @Override Loading core/java/android/view/GLES20RecordingCanvas.java +9 −9 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ class GLES20RecordingCanvas extends GLES20Canvas { if (paint != null) { final Shader shader = paint.getShader(); if (shader instanceof BitmapShader) { mDisplayList.mBitmaps.add(((BitmapShader) shader).mBitmap); mDisplayList.getBitmaps().add(((BitmapShader) shader).mBitmap); } } } Loading @@ -82,36 +82,36 @@ class GLES20RecordingCanvas extends GLES20Canvas { @Override public void drawPatch(NinePatch patch, RectF dst, Paint paint) { super.drawPatch(patch, dst, paint); mDisplayList.mBitmaps.add(patch.getBitmap()); mDisplayList.mNinePatches.add(patch); mDisplayList.getBitmaps().add(patch.getBitmap()); mDisplayList.getNinePatches().add(patch); // Shaders in the Paint are ignored when drawing a Bitmap } @Override public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint) { super.drawBitmap(bitmap, left, top, paint); mDisplayList.mBitmaps.add(bitmap); mDisplayList.getBitmaps().add(bitmap); // Shaders in the Paint are ignored when drawing a Bitmap } @Override public void drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) { super.drawBitmap(bitmap, matrix, paint); mDisplayList.mBitmaps.add(bitmap); mDisplayList.getBitmaps().add(bitmap); // Shaders in the Paint are ignored when drawing a Bitmap } @Override public void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) { super.drawBitmap(bitmap, src, dst, paint); mDisplayList.mBitmaps.add(bitmap); mDisplayList.getBitmaps().add(bitmap); // Shaders in the Paint are ignored when drawing a Bitmap } @Override public void drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) { super.drawBitmap(bitmap, src, dst, paint); mDisplayList.mBitmaps.add(bitmap); mDisplayList.getBitmaps().add(bitmap); // Shaders in the Paint are ignored when drawing a Bitmap } Loading @@ -134,7 +134,7 @@ class GLES20RecordingCanvas extends GLES20Canvas { int vertOffset, int[] colors, int colorOffset, Paint paint) { super.drawBitmapMesh(bitmap, meshWidth, meshHeight, verts, vertOffset, colors, colorOffset, paint); mDisplayList.mBitmaps.add(bitmap); mDisplayList.getBitmaps().add(bitmap); // Shaders in the Paint are ignored when drawing a Bitmap } Loading @@ -147,7 +147,7 @@ class GLES20RecordingCanvas extends GLES20Canvas { @Override public int drawDisplayList(DisplayList displayList, Rect dirty, int flags) { int status = super.drawDisplayList(displayList, dirty, flags); mDisplayList.mChildDisplayLists.add(displayList); mDisplayList.getChildDisplayLists().add(displayList); return status; } Loading core/java/android/view/View.java +15 −18 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ import android.graphics.Shader; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.hardware.display.DisplayManagerGlobal; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; Loading Loading @@ -3054,18 +3053,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, private int[] mDrawableState = null; /** * Set to true when drawing cache is enabled and cannot be created. * * @hide */ public boolean mCachingFailed; private Bitmap mDrawingCache; private Bitmap mUnscaledDrawingCache; private HardwareLayer mHardwareLayer; DisplayList mDisplayList; /** * When this view has focus and the next focus is {@link #FOCUS_LEFT}, * the user may specify which view to go to next. Loading Loading @@ -3258,6 +3245,18 @@ public class View implements Drawable.Callback, KeyEvent.Callback, int mLayerType = LAYER_TYPE_NONE; Paint mLayerPaint; Rect mLocalDirtyRect; private HardwareLayer mHardwareLayer; /** * Set to true when drawing cache is enabled and cannot be created. * * @hide */ public boolean mCachingFailed; private Bitmap mDrawingCache; private Bitmap mUnscaledDrawingCache; DisplayList mDisplayList; /** * Set to true when the view is sending hover accessibility events because it Loading Loading @@ -3309,8 +3308,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mUserPaddingStart = UNDEFINED_PADDING; mUserPaddingEnd = UNDEFINED_PADDING; if (!sUseBrokenMakeMeasureSpec && context.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.JELLY_BEAN_MR1 ) { if (!sUseBrokenMakeMeasureSpec && context != null && context.getApplicationInfo().targetSdkVersion <= JELLY_BEAN_MR1) { // Older apps may need this compatibility hack for measurement. sUseBrokenMakeMeasureSpec = true; } Loading Loading @@ -4872,7 +4871,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * Note: Called from the default {@link AccessibilityDelegate}. */ void onPopulateAccessibilityEventInternal(AccessibilityEvent event) { } /** Loading Loading @@ -8598,8 +8596,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, void setFlags(int flags, int mask) { final boolean accessibilityEnabled = AccessibilityManager.getInstance(mContext).isEnabled(); final boolean oldIncludeForAccessibility = accessibilityEnabled ? includeForAccessibility() : false; final boolean oldIncludeForAccessibility = accessibilityEnabled && includeForAccessibility(); int old = mViewFlags; mViewFlags = (mViewFlags & ~mask) | (flags & mask); Loading Loading
core/java/android/view/GLES20Canvas.java +44 −16 Original line number Diff line number Diff line Loading @@ -59,11 +59,11 @@ class GLES20Canvas extends HardwareCanvas { private int mWidth; private int mHeight; private final float[] mPoint = new float[2]; private final float[] mLine = new float[4]; private float[] mPoint; private float[] mLine; private final Rect mClipBounds = new Rect(); private final RectF mPathBounds = new RectF(); private Rect mClipBounds; private RectF mPathBounds; private DrawFilter mFilter; Loading Loading @@ -442,6 +442,31 @@ class GLES20Canvas extends HardwareCanvas { private static native void nInterrupt(int renderer); private static native void nResume(int renderer); /////////////////////////////////////////////////////////////////////////// // Support /////////////////////////////////////////////////////////////////////////// private Rect getInternalClipBounds() { if (mClipBounds == null) mClipBounds = new Rect(); return mClipBounds; } private RectF getPathBounds() { if (mPathBounds == null) mPathBounds = new RectF(); return mPathBounds; } private float[] getPointStorage() { if (mPoint == null) mPoint = new float[2]; return mPoint; } private float[] getLineStorage() { if (mLine == null) mLine = new float[4]; return mLine; } /////////////////////////////////////////////////////////////////////////// // Clipping /////////////////////////////////////////////////////////////////////////// Loading Loading @@ -530,9 +555,10 @@ class GLES20Canvas extends HardwareCanvas { @Override public boolean quickReject(Path path, EdgeType type) { path.computeBounds(mPathBounds, true); return nQuickReject(mRenderer, mPathBounds.left, mPathBounds.top, mPathBounds.right, mPathBounds.bottom); RectF pathBounds = getPathBounds(); path.computeBounds(pathBounds, true); return nQuickReject(mRenderer, pathBounds.left, pathBounds.top, pathBounds.right, pathBounds.bottom); } @Override Loading Loading @@ -967,11 +993,12 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) { mLine[0] = startX; mLine[1] = startY; mLine[2] = stopX; mLine[3] = stopY; drawLines(mLine, 0, 4, paint); float[] line = getLineStorage(); line[0] = startX; line[1] = startY; line[2] = stopX; line[3] = stopY; drawLines(line, 0, 4, paint); } @Override Loading Loading @@ -1012,7 +1039,7 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawPaint(Paint paint) { final Rect r = mClipBounds; final Rect r = getInternalClipBounds(); nGetClipBounds(mRenderer, r); drawRect(r.left, r.top, r.right, r.bottom, paint); } Loading Loading @@ -1089,9 +1116,10 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawPoint(float x, float y, Paint paint) { mPoint[0] = x; mPoint[1] = y; drawPoints(mPoint, 0, 2, paint); float[] point = getPointStorage(); point[0] = x; point[1] = y; drawPoints(point, 0, 2, paint); } @Override Loading
core/java/android/view/GLES20DisplayList.java +21 −6 Original line number Diff line number Diff line Loading @@ -30,9 +30,9 @@ class GLES20DisplayList extends DisplayList { // alive as long as the DisplayList is alive. The Bitmap and DisplayList lists // are populated by the GLES20RecordingCanvas during appropriate drawing calls and are // cleared at the start of a new drawing frame or when the view is detached from the window. final ArrayList<Bitmap> mBitmaps = new ArrayList<Bitmap>(10); final ArrayList<NinePatch> mNinePatches = new ArrayList<NinePatch>(10); final ArrayList<DisplayList> mChildDisplayLists = new ArrayList<DisplayList>(); private ArrayList<Bitmap> mBitmaps; private ArrayList<NinePatch> mNinePatches; private ArrayList<DisplayList> mChildDisplayLists; private GLES20RecordingCanvas mCanvas; private boolean mValid; Loading Loading @@ -89,9 +89,24 @@ class GLES20DisplayList extends DisplayList { } void clearReferences() { mBitmaps.clear(); mNinePatches.clear(); mChildDisplayLists.clear(); if (mBitmaps != null) mBitmaps.clear(); if (mNinePatches != null) mNinePatches.clear(); if (mChildDisplayLists != null) mChildDisplayLists.clear(); } ArrayList<Bitmap> getBitmaps() { if (mBitmaps == null) mBitmaps = new ArrayList<Bitmap>(5); return mBitmaps; } ArrayList<NinePatch> getNinePatches() { if (mNinePatches == null) mNinePatches = new ArrayList<NinePatch>(5); return mNinePatches; } ArrayList<DisplayList> getChildDisplayLists() { if (mChildDisplayLists == null) mChildDisplayLists = new ArrayList<DisplayList>(); return mChildDisplayLists; } @Override Loading
core/java/android/view/GLES20RecordingCanvas.java +9 −9 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ class GLES20RecordingCanvas extends GLES20Canvas { if (paint != null) { final Shader shader = paint.getShader(); if (shader instanceof BitmapShader) { mDisplayList.mBitmaps.add(((BitmapShader) shader).mBitmap); mDisplayList.getBitmaps().add(((BitmapShader) shader).mBitmap); } } } Loading @@ -82,36 +82,36 @@ class GLES20RecordingCanvas extends GLES20Canvas { @Override public void drawPatch(NinePatch patch, RectF dst, Paint paint) { super.drawPatch(patch, dst, paint); mDisplayList.mBitmaps.add(patch.getBitmap()); mDisplayList.mNinePatches.add(patch); mDisplayList.getBitmaps().add(patch.getBitmap()); mDisplayList.getNinePatches().add(patch); // Shaders in the Paint are ignored when drawing a Bitmap } @Override public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint) { super.drawBitmap(bitmap, left, top, paint); mDisplayList.mBitmaps.add(bitmap); mDisplayList.getBitmaps().add(bitmap); // Shaders in the Paint are ignored when drawing a Bitmap } @Override public void drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) { super.drawBitmap(bitmap, matrix, paint); mDisplayList.mBitmaps.add(bitmap); mDisplayList.getBitmaps().add(bitmap); // Shaders in the Paint are ignored when drawing a Bitmap } @Override public void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) { super.drawBitmap(bitmap, src, dst, paint); mDisplayList.mBitmaps.add(bitmap); mDisplayList.getBitmaps().add(bitmap); // Shaders in the Paint are ignored when drawing a Bitmap } @Override public void drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) { super.drawBitmap(bitmap, src, dst, paint); mDisplayList.mBitmaps.add(bitmap); mDisplayList.getBitmaps().add(bitmap); // Shaders in the Paint are ignored when drawing a Bitmap } Loading @@ -134,7 +134,7 @@ class GLES20RecordingCanvas extends GLES20Canvas { int vertOffset, int[] colors, int colorOffset, Paint paint) { super.drawBitmapMesh(bitmap, meshWidth, meshHeight, verts, vertOffset, colors, colorOffset, paint); mDisplayList.mBitmaps.add(bitmap); mDisplayList.getBitmaps().add(bitmap); // Shaders in the Paint are ignored when drawing a Bitmap } Loading @@ -147,7 +147,7 @@ class GLES20RecordingCanvas extends GLES20Canvas { @Override public int drawDisplayList(DisplayList displayList, Rect dirty, int flags) { int status = super.drawDisplayList(displayList, dirty, flags); mDisplayList.mChildDisplayLists.add(displayList); mDisplayList.getChildDisplayLists().add(displayList); return status; } Loading
core/java/android/view/View.java +15 −18 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ import android.graphics.Shader; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.hardware.display.DisplayManagerGlobal; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; Loading Loading @@ -3054,18 +3053,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, private int[] mDrawableState = null; /** * Set to true when drawing cache is enabled and cannot be created. * * @hide */ public boolean mCachingFailed; private Bitmap mDrawingCache; private Bitmap mUnscaledDrawingCache; private HardwareLayer mHardwareLayer; DisplayList mDisplayList; /** * When this view has focus and the next focus is {@link #FOCUS_LEFT}, * the user may specify which view to go to next. Loading Loading @@ -3258,6 +3245,18 @@ public class View implements Drawable.Callback, KeyEvent.Callback, int mLayerType = LAYER_TYPE_NONE; Paint mLayerPaint; Rect mLocalDirtyRect; private HardwareLayer mHardwareLayer; /** * Set to true when drawing cache is enabled and cannot be created. * * @hide */ public boolean mCachingFailed; private Bitmap mDrawingCache; private Bitmap mUnscaledDrawingCache; DisplayList mDisplayList; /** * Set to true when the view is sending hover accessibility events because it Loading Loading @@ -3309,8 +3308,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mUserPaddingStart = UNDEFINED_PADDING; mUserPaddingEnd = UNDEFINED_PADDING; if (!sUseBrokenMakeMeasureSpec && context.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.JELLY_BEAN_MR1 ) { if (!sUseBrokenMakeMeasureSpec && context != null && context.getApplicationInfo().targetSdkVersion <= JELLY_BEAN_MR1) { // Older apps may need this compatibility hack for measurement. sUseBrokenMakeMeasureSpec = true; } Loading Loading @@ -4872,7 +4871,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * Note: Called from the default {@link AccessibilityDelegate}. */ void onPopulateAccessibilityEventInternal(AccessibilityEvent event) { } /** Loading Loading @@ -8598,8 +8596,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, void setFlags(int flags, int mask) { final boolean accessibilityEnabled = AccessibilityManager.getInstance(mContext).isEnabled(); final boolean oldIncludeForAccessibility = accessibilityEnabled ? includeForAccessibility() : false; final boolean oldIncludeForAccessibility = accessibilityEnabled && includeForAccessibility(); int old = mViewFlags; mViewFlags = (mViewFlags & ~mask) | (flags & mask); Loading