Move where updateProperties is called

Change-Id: I27da448996019094c44487ce28c5689d098d6535
This commit is contained in:
John Reck
2014-03-24 21:00:18 -07:00
parent 41c2d2cec3
commit bfb07a0377
7 changed files with 15 additions and 3 deletions

View File

@@ -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;

View File

@@ -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",

View File

@@ -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();

View File

@@ -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);

View File

@@ -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();

View File

@@ -137,7 +137,7 @@ public:
return properties().getHeight();
}
void updateProperties();
ANDROID_API void updateProperties();
private:
typedef key_value_pair_t<float, DrawDisplayListOp*> ZDrawDisplayListOpPair;

View File

@@ -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()) {