diff options
author | 2014-03-25 17:46:18 +0000 | |
---|---|---|
committer | 2014-03-25 17:46:18 +0000 | |
commit | bcad68ad80e5a44e5dc6988eddb8acabdc01a737 (patch) | |
tree | 58d875af72f19dca8891360fac86b139c0464217 | |
parent | 632717e60990b900e6d20dddd3935a57dd6a8fa6 (diff) | |
parent | bfb07a03777af424e99bca1dac4c903aaf44e99d (diff) |
Merge "Move where updateProperties is called"
-rw-r--r-- | core/java/android/view/GLRenderer.java | 3 | ||||
-rw-r--r-- | core/jni/android_view_GLRenderer.cpp | 8 | ||||
-rw-r--r-- | libs/hwui/DeferredLayerUpdater.cpp | 1 | ||||
-rw-r--r-- | libs/hwui/Layer.cpp | 1 | ||||
-rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 1 | ||||
-rw-r--r-- | libs/hwui/RenderNode.h | 2 | ||||
-rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 2 |
7 files changed, 15 insertions, 3 deletions
diff --git a/core/java/android/view/GLRenderer.java b/core/java/android/view/GLRenderer.java index 4d42c5df68a8..90824abebce9 100644 --- a/core/java/android/view/GLRenderer.java +++ b/core/java/android/view/GLRenderer.java @@ -1287,6 +1287,7 @@ public class GLRenderer extends HardwareRenderer { } Trace.traceBegin(Trace.TRACE_TAG_VIEW, "drawDisplayList"); + nUpdateRenderNodeProperties(displayList.getNativeDisplayList()); try { status |= canvas.drawDisplayList(displayList, mRedrawClip, RenderNode.FLAG_CLIP_CHILDREN); @@ -1466,6 +1467,8 @@ public class GLRenderer extends HardwareRenderer { static native void nDestroyLayer(long layerPtr); + private static native void nUpdateRenderNodeProperties(long displayListPtr); + class DrawPerformanceDataProvider extends GraphDataProvider { private final int mGraphType; diff --git a/core/jni/android_view_GLRenderer.cpp b/core/jni/android_view_GLRenderer.cpp index 00d92fc73d84..e45c1b99156d 100644 --- a/core/jni/android_view_GLRenderer.cpp +++ b/core/jni/android_view_GLRenderer.cpp @@ -148,6 +148,13 @@ static void android_view_GLRenderer_setDisplayListData(JNIEnv* env, jobject claz displayList->setData(newData); } +static void android_view_GLRenderer_updateRenderNodeProperties(JNIEnv* env, jobject clazz, + jlong renderNodePtr) { + using namespace android::uirenderer; + RenderNode* renderNode = reinterpret_cast<RenderNode*>(renderNodePtr); + renderNode->updateProperties(); +} + #endif // USE_OPENGL_RENDERER // ---------------------------------------------------------------------------- @@ -179,6 +186,7 @@ static JNINativeMethod gMethods[] = { { "getSystemTime", "()J", (void*) android_view_GLRenderer_getSystemTime }, { "nDestroyLayer", "(J)V", (void*) android_view_GLRenderer_destroyLayer }, { "nSetDisplayListData", "(JJ)V", (void*) android_view_GLRenderer_setDisplayListData }, + { "nUpdateRenderNodeProperties", "(J)V", (void*) android_view_GLRenderer_updateRenderNodeProperties }, #endif { "setupShadersDiskCache", "(Ljava/lang/String;)V", diff --git a/libs/hwui/DeferredLayerUpdater.cpp b/libs/hwui/DeferredLayerUpdater.cpp index 7a83967607d8..7380bbf7115e 100644 --- a/libs/hwui/DeferredLayerUpdater.cpp +++ b/libs/hwui/DeferredLayerUpdater.cpp @@ -75,6 +75,7 @@ bool DeferredLayerUpdater::apply() { success = LayerRenderer::resizeLayer(mLayer, mWidth, mHeight); } mLayer->setBlend(mBlend); + mDisplayList->updateProperties(); mLayer->updateDeferred(mRenderer, mDisplayList, mDirtyRect.left, mDirtyRect.top, mDirtyRect.right, mDirtyRect.bottom); mDirtyRect.setEmpty(); diff --git a/libs/hwui/Layer.cpp b/libs/hwui/Layer.cpp index 3f6c7df2294f..bd9bfe95c057 100644 --- a/libs/hwui/Layer.cpp +++ b/libs/hwui/Layer.cpp @@ -200,7 +200,6 @@ void Layer::defer() { renderer->setupFrameState(dirtyRect.left, dirtyRect.top, dirtyRect.right, dirtyRect.bottom, !isBlend()); - displayList->updateProperties(); displayList->computeOrdering(); displayList->defer(deferredState, 0); diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 5ef8abbc73e4..cdd789d92fae 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -1919,7 +1919,6 @@ status_t OpenGLRenderer::drawDisplayList(RenderNode* displayList, Rect& dirty, // will be performed by the display list itself if (displayList && displayList->isRenderable()) { // compute 3d ordering - displayList->updateProperties(); displayList->computeOrdering(); if (CC_UNLIKELY(mCaches.drawDeferDisabled)) { status = startFrame(); diff --git a/libs/hwui/RenderNode.h b/libs/hwui/RenderNode.h index 9a7f9b458bba..756c94442559 100644 --- a/libs/hwui/RenderNode.h +++ b/libs/hwui/RenderNode.h @@ -137,7 +137,7 @@ public: return properties().getHeight(); } - void updateProperties(); + ANDROID_API void updateProperties(); private: typedef key_value_pair_t<float, DrawDisplayListOp*> ZDrawDisplayListOpPair; diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 8ebffc28a4e2..b3b417370f8d 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -392,6 +392,8 @@ void CanvasContext::drawDisplayList(RenderNode* displayList, Rect* dirty) { LOG_ALWAYS_FATAL_IF(!mCanvas || mEglSurface == EGL_NO_SURFACE, "drawDisplayList called on a context with no canvas or surface!"); + displayList->updateProperties(); + EGLint width, height; mGlobalContext->beginFrame(mEglSurface, &width, &height); if (width != mCanvas->getViewportWidth() || height != mCanvas->getViewportHeight()) { |