summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2014-04-11 16:08:14 -0700
committerJohn Reck <jreck@google.com>2014-04-11 16:16:48 -0700
commitbc0cc0220b830df54c8ed41d0b53daffd7f6c991 (patch)
tree8f3ceb50b8c41e52bfce6aeb4db672c21084e7ab /core
parentfd7d31087bcd40b825b0eee3058e2298d8648e9f (diff)
downloadframeworks_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.java25
-rw-r--r--core/java/android/view/ViewRootImpl.java5
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);
}
/**