diff options
author | John Reck <jreck@google.com> | 2014-04-11 16:08:14 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2014-04-11 16:16:48 -0700 |
commit | bc0cc0220b830df54c8ed41d0b53daffd7f6c991 (patch) | |
tree | 8f3ceb50b8c41e52bfce6aeb4db672c21084e7ab /core | |
parent | fd7d31087bcd40b825b0eee3058e2298d8648e9f (diff) | |
download | frameworks_base-bc0cc0220b830df54c8ed41d0b53daffd7f6c991.zip frameworks_base-bc0cc0220b830df54c8ed41d0b53daffd7f6c991.tar.gz frameworks_base-bc0cc0220b830df54c8ed41d0b53daffd7f6c991.tar.bz2 |
Support onHardwarePostDraw in ThreadedRenderer
Bug: 13958485
Change-Id: Ie9c7af7cee582850a7f0a3d891aa3685c230cfc7
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/view/ThreadedRenderer.java | 25 | ||||
-rw-r--r-- | core/java/android/view/ViewRootImpl.java | 5 |
2 files changed, 20 insertions, 10 deletions
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java index 789b761..cbb98e1 100644 --- a/core/java/android/view/ThreadedRenderer.java +++ b/core/java/android/view/ThreadedRenderer.java @@ -55,9 +55,12 @@ public class ThreadedRenderer extends HardwareRenderer { private int mWidth, mHeight; private long mNativeProxy; private boolean mInitialized = false; + private RenderNode mRootNode; ThreadedRenderer(boolean translucent) { mNativeProxy = nCreateProxy(translucent); + mRootNode = RenderNode.create("RootNode"); + mRootNode.setClipToBounds(false); } @Override @@ -127,6 +130,7 @@ public class ThreadedRenderer extends HardwareRenderer { void setup(int width, int height) { mWidth = width; mHeight = height; + mRootNode.setLeftTopRightBottom(0, 0, mWidth, mHeight); nSetup(mNativeProxy, width, height); } @@ -165,10 +169,7 @@ public class ThreadedRenderer extends HardwareRenderer { public void repeatLastDraw() { } - @Override - void draw(View view, AttachInfo attachInfo, HardwareDrawCallbacks callbacks, Rect dirty) { - attachInfo.mIgnoreDirtyState = true; - attachInfo.mDrawingTime = SystemClock.uptimeMillis(); + private void updateRootDisplayList(View view, HardwareDrawCallbacks callbacks) { view.mPrivateFlags |= View.PFLAG_DRAWN; view.mRecreateDisplayList = (view.mPrivateFlags & View.PFLAG_INVALIDATED) @@ -176,15 +177,27 @@ public class ThreadedRenderer extends HardwareRenderer { view.mPrivateFlags &= ~View.PFLAG_INVALIDATED; Trace.traceBegin(Trace.TRACE_TAG_VIEW, "getDisplayList"); - RenderNode displayList = view.getDisplayList(); + HardwareCanvas canvas = mRootNode.start(mWidth, mHeight); + callbacks.onHardwarePostDraw(canvas); + canvas.drawDisplayList(view.getDisplayList()); + callbacks.onHardwarePostDraw(canvas); + mRootNode.end(canvas); Trace.traceEnd(Trace.TRACE_TAG_VIEW); view.mRecreateDisplayList = false; + } + + @Override + void draw(View view, AttachInfo attachInfo, HardwareDrawCallbacks callbacks, Rect dirty) { + attachInfo.mIgnoreDirtyState = true; + attachInfo.mDrawingTime = SystemClock.uptimeMillis(); + + updateRootDisplayList(view, callbacks); if (dirty == null) { dirty = NULL_RECT; } - nDrawDisplayList(mNativeProxy, displayList.getNativeDisplayList(), + nDrawDisplayList(mNativeProxy, mRootNode.getNativeDisplayList(), dirty.left, dirty.top, dirty.right, dirty.bottom); } diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 65ac50d..5b16d34 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -2174,10 +2174,7 @@ public final class ViewRootImpl implements ViewParent, mResizePaint.setAlpha(mResizeAlpha); canvas.drawHardwareLayer(mResizeBuffer, 0.0f, mHardwareYOffset, mResizePaint); } - // TODO: this - if (!HardwareRenderer.sUseRenderThread) { - drawAccessibilityFocusedDrawableIfNeeded(canvas); - } + drawAccessibilityFocusedDrawableIfNeeded(canvas); } /** |