Merge "Move where updateProperties is called"
This commit is contained in:
@@ -1287,6 +1287,7 @@ public class GLRenderer extends HardwareRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Trace.traceBegin(Trace.TRACE_TAG_VIEW, "drawDisplayList");
|
Trace.traceBegin(Trace.TRACE_TAG_VIEW, "drawDisplayList");
|
||||||
|
nUpdateRenderNodeProperties(displayList.getNativeDisplayList());
|
||||||
try {
|
try {
|
||||||
status |= canvas.drawDisplayList(displayList, mRedrawClip,
|
status |= canvas.drawDisplayList(displayList, mRedrawClip,
|
||||||
RenderNode.FLAG_CLIP_CHILDREN);
|
RenderNode.FLAG_CLIP_CHILDREN);
|
||||||
@@ -1466,6 +1467,8 @@ public class GLRenderer extends HardwareRenderer {
|
|||||||
|
|
||||||
static native void nDestroyLayer(long layerPtr);
|
static native void nDestroyLayer(long layerPtr);
|
||||||
|
|
||||||
|
private static native void nUpdateRenderNodeProperties(long displayListPtr);
|
||||||
|
|
||||||
class DrawPerformanceDataProvider extends GraphDataProvider {
|
class DrawPerformanceDataProvider extends GraphDataProvider {
|
||||||
private final int mGraphType;
|
private final int mGraphType;
|
||||||
|
|
||||||
|
|||||||
@@ -148,6 +148,13 @@ static void android_view_GLRenderer_setDisplayListData(JNIEnv* env, jobject claz
|
|||||||
displayList->setData(newData);
|
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
|
#endif // USE_OPENGL_RENDERER
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -179,6 +186,7 @@ static JNINativeMethod gMethods[] = {
|
|||||||
{ "getSystemTime", "()J", (void*) android_view_GLRenderer_getSystemTime },
|
{ "getSystemTime", "()J", (void*) android_view_GLRenderer_getSystemTime },
|
||||||
{ "nDestroyLayer", "(J)V", (void*) android_view_GLRenderer_destroyLayer },
|
{ "nDestroyLayer", "(J)V", (void*) android_view_GLRenderer_destroyLayer },
|
||||||
{ "nSetDisplayListData", "(JJ)V", (void*) android_view_GLRenderer_setDisplayListData },
|
{ "nSetDisplayListData", "(JJ)V", (void*) android_view_GLRenderer_setDisplayListData },
|
||||||
|
{ "nUpdateRenderNodeProperties", "(J)V", (void*) android_view_GLRenderer_updateRenderNodeProperties },
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
{ "setupShadersDiskCache", "(Ljava/lang/String;)V",
|
{ "setupShadersDiskCache", "(Ljava/lang/String;)V",
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ bool DeferredLayerUpdater::apply() {
|
|||||||
success = LayerRenderer::resizeLayer(mLayer, mWidth, mHeight);
|
success = LayerRenderer::resizeLayer(mLayer, mWidth, mHeight);
|
||||||
}
|
}
|
||||||
mLayer->setBlend(mBlend);
|
mLayer->setBlend(mBlend);
|
||||||
|
mDisplayList->updateProperties();
|
||||||
mLayer->updateDeferred(mRenderer, mDisplayList,
|
mLayer->updateDeferred(mRenderer, mDisplayList,
|
||||||
mDirtyRect.left, mDirtyRect.top, mDirtyRect.right, mDirtyRect.bottom);
|
mDirtyRect.left, mDirtyRect.top, mDirtyRect.right, mDirtyRect.bottom);
|
||||||
mDirtyRect.setEmpty();
|
mDirtyRect.setEmpty();
|
||||||
|
|||||||
@@ -200,7 +200,6 @@ void Layer::defer() {
|
|||||||
renderer->setupFrameState(dirtyRect.left, dirtyRect.top,
|
renderer->setupFrameState(dirtyRect.left, dirtyRect.top,
|
||||||
dirtyRect.right, dirtyRect.bottom, !isBlend());
|
dirtyRect.right, dirtyRect.bottom, !isBlend());
|
||||||
|
|
||||||
displayList->updateProperties();
|
|
||||||
displayList->computeOrdering();
|
displayList->computeOrdering();
|
||||||
displayList->defer(deferredState, 0);
|
displayList->defer(deferredState, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -1919,7 +1919,6 @@ status_t OpenGLRenderer::drawDisplayList(RenderNode* displayList, Rect& dirty,
|
|||||||
// will be performed by the display list itself
|
// will be performed by the display list itself
|
||||||
if (displayList && displayList->isRenderable()) {
|
if (displayList && displayList->isRenderable()) {
|
||||||
// compute 3d ordering
|
// compute 3d ordering
|
||||||
displayList->updateProperties();
|
|
||||||
displayList->computeOrdering();
|
displayList->computeOrdering();
|
||||||
if (CC_UNLIKELY(mCaches.drawDeferDisabled)) {
|
if (CC_UNLIKELY(mCaches.drawDeferDisabled)) {
|
||||||
status = startFrame();
|
status = startFrame();
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ public:
|
|||||||
return properties().getHeight();
|
return properties().getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateProperties();
|
ANDROID_API void updateProperties();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef key_value_pair_t<float, DrawDisplayListOp*> ZDrawDisplayListOpPair;
|
typedef key_value_pair_t<float, DrawDisplayListOp*> ZDrawDisplayListOpPair;
|
||||||
|
|||||||
@@ -392,6 +392,8 @@ void CanvasContext::drawDisplayList(RenderNode* displayList, Rect* dirty) {
|
|||||||
LOG_ALWAYS_FATAL_IF(!mCanvas || mEglSurface == EGL_NO_SURFACE,
|
LOG_ALWAYS_FATAL_IF(!mCanvas || mEglSurface == EGL_NO_SURFACE,
|
||||||
"drawDisplayList called on a context with no canvas or surface!");
|
"drawDisplayList called on a context with no canvas or surface!");
|
||||||
|
|
||||||
|
displayList->updateProperties();
|
||||||
|
|
||||||
EGLint width, height;
|
EGLint width, height;
|
||||||
mGlobalContext->beginFrame(mEglSurface, &width, &height);
|
mGlobalContext->beginFrame(mEglSurface, &width, &height);
|
||||||
if (width != mCanvas->getViewportWidth() || height != mCanvas->getViewportHeight()) {
|
if (width != mCanvas->getViewportWidth() || height != mCanvas->getViewportHeight()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user