Loading core/java/android/view/GLES20Canvas.java +12 −0 Original line number Diff line number Diff line Loading @@ -178,6 +178,18 @@ class GLES20Canvas extends HardwareCanvas { private static native void nSetHighContrastText(long renderer, boolean highContrastText); @Override public void insertReorderBarrier() { nInsertReorderBarrier(mRenderer, true); } @Override public void insertInorderBarrier() { nInsertReorderBarrier(mRenderer, false); } private static native void nInsertReorderBarrier(long renderer, boolean enableReorder); @Override public int onPreDraw(Rect dirty) { if (dirty != null) { Loading core/java/android/view/ViewGroup.java +2 −1 Original line number Diff line number Diff line Loading @@ -3072,7 +3072,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager boolean more = false; final long drawingTime = getDrawingTime(); if (usingRenderNodeProperties) canvas.insertReorderBarrier(); // Only use the preordered list if not HW accelerated, since the HW pipeline will do the // draw reordering internally final ArrayList<View> preorderedList = usingRenderNodeProperties Loading @@ -3099,6 +3099,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager more |= drawChild(canvas, child, drawingTime); } } if (usingRenderNodeProperties) canvas.insertInorderBarrier(); if (debugDraw()) { onDebugDraw(canvas); Loading core/jni/android_view_GLES20Canvas.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,12 @@ static void android_view_GLES20Canvas_setHighContrastText(JNIEnv* env, jobject c renderer->setHighContrastText(highContrastText); } static void android_view_GLES20Canvas_insertReorderBarrier(JNIEnv* env, jobject clazz, jlong rendererPtr, jboolean reorderEnable) { DisplayListRenderer* renderer = reinterpret_cast<DisplayListRenderer*>(rendererPtr); renderer->insertReorderBarrier(reorderEnable); } static int android_view_GLES20Canvas_prepare(JNIEnv* env, jobject clazz, jlong rendererPtr, jboolean opaque) { DisplayListRenderer* renderer = reinterpret_cast<DisplayListRenderer*>(rendererPtr); Loading Loading @@ -859,6 +865,7 @@ static JNINativeMethod gMethods[] = { { "nDestroyRenderer", "(J)V", (void*) android_view_GLES20Canvas_destroyRenderer }, { "nSetViewport", "(JII)V", (void*) android_view_GLES20Canvas_setViewport }, { "nSetHighContrastText","(JZ)V", (void*) android_view_GLES20Canvas_setHighContrastText }, { "nInsertReorderBarrier","(JZ)V", (void*) android_view_GLES20Canvas_insertReorderBarrier }, { "nPrepare", "(JZ)I", (void*) android_view_GLES20Canvas_prepare }, { "nPrepareDirty", "(JIIIIZ)I", (void*) android_view_GLES20Canvas_prepareDirty }, { "nFinish", "(J)V", (void*) android_view_GLES20Canvas_finish }, Loading graphics/java/android/graphics/Canvas.java +6 −0 Original line number Diff line number Diff line Loading @@ -243,6 +243,12 @@ public class Canvas { /** @hide */ public void setHighContrastText(boolean highContrastText) {} /** @hide */ public void insertReorderBarrier() {} /** @hide */ public void insertInorderBarrier() {} /** * @hide */ Loading libs/hwui/DisplayList.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -89,11 +89,9 @@ void DisplayListData::cleanupResources() { layers.clear(); } void DisplayListData::addChild(DrawRenderNodeOp* op) { LOG_ALWAYS_FATAL_IF(!op->renderNode(), "DrawRenderNodeOp with no render node!"); mChildren.push(op); size_t DisplayListData::addChild(DrawRenderNodeOp* op) { mReferenceHolders.push(op->renderNode()); return mChildren.add(op); } }; // namespace uirenderer Loading Loading
core/java/android/view/GLES20Canvas.java +12 −0 Original line number Diff line number Diff line Loading @@ -178,6 +178,18 @@ class GLES20Canvas extends HardwareCanvas { private static native void nSetHighContrastText(long renderer, boolean highContrastText); @Override public void insertReorderBarrier() { nInsertReorderBarrier(mRenderer, true); } @Override public void insertInorderBarrier() { nInsertReorderBarrier(mRenderer, false); } private static native void nInsertReorderBarrier(long renderer, boolean enableReorder); @Override public int onPreDraw(Rect dirty) { if (dirty != null) { Loading
core/java/android/view/ViewGroup.java +2 −1 Original line number Diff line number Diff line Loading @@ -3072,7 +3072,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager boolean more = false; final long drawingTime = getDrawingTime(); if (usingRenderNodeProperties) canvas.insertReorderBarrier(); // Only use the preordered list if not HW accelerated, since the HW pipeline will do the // draw reordering internally final ArrayList<View> preorderedList = usingRenderNodeProperties Loading @@ -3099,6 +3099,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager more |= drawChild(canvas, child, drawingTime); } } if (usingRenderNodeProperties) canvas.insertInorderBarrier(); if (debugDraw()) { onDebugDraw(canvas); Loading
core/jni/android_view_GLES20Canvas.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,12 @@ static void android_view_GLES20Canvas_setHighContrastText(JNIEnv* env, jobject c renderer->setHighContrastText(highContrastText); } static void android_view_GLES20Canvas_insertReorderBarrier(JNIEnv* env, jobject clazz, jlong rendererPtr, jboolean reorderEnable) { DisplayListRenderer* renderer = reinterpret_cast<DisplayListRenderer*>(rendererPtr); renderer->insertReorderBarrier(reorderEnable); } static int android_view_GLES20Canvas_prepare(JNIEnv* env, jobject clazz, jlong rendererPtr, jboolean opaque) { DisplayListRenderer* renderer = reinterpret_cast<DisplayListRenderer*>(rendererPtr); Loading Loading @@ -859,6 +865,7 @@ static JNINativeMethod gMethods[] = { { "nDestroyRenderer", "(J)V", (void*) android_view_GLES20Canvas_destroyRenderer }, { "nSetViewport", "(JII)V", (void*) android_view_GLES20Canvas_setViewport }, { "nSetHighContrastText","(JZ)V", (void*) android_view_GLES20Canvas_setHighContrastText }, { "nInsertReorderBarrier","(JZ)V", (void*) android_view_GLES20Canvas_insertReorderBarrier }, { "nPrepare", "(JZ)I", (void*) android_view_GLES20Canvas_prepare }, { "nPrepareDirty", "(JIIIIZ)I", (void*) android_view_GLES20Canvas_prepareDirty }, { "nFinish", "(J)V", (void*) android_view_GLES20Canvas_finish }, Loading
graphics/java/android/graphics/Canvas.java +6 −0 Original line number Diff line number Diff line Loading @@ -243,6 +243,12 @@ public class Canvas { /** @hide */ public void setHighContrastText(boolean highContrastText) {} /** @hide */ public void insertReorderBarrier() {} /** @hide */ public void insertInorderBarrier() {} /** * @hide */ Loading
libs/hwui/DisplayList.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -89,11 +89,9 @@ void DisplayListData::cleanupResources() { layers.clear(); } void DisplayListData::addChild(DrawRenderNodeOp* op) { LOG_ALWAYS_FATAL_IF(!op->renderNode(), "DrawRenderNodeOp with no render node!"); mChildren.push(op); size_t DisplayListData::addChild(DrawRenderNodeOp* op) { mReferenceHolders.push(op->renderNode()); return mChildren.add(op); } }; // namespace uirenderer Loading