Merge "End staging animators when destroy RootRenderNode" into nyc-dev

am: 46151a4739

* commit '46151a4739b0ab9620010b16551e60471c959244':
  End staging animators when destroy RootRenderNode
This commit is contained in:
Doris Liu
2016-02-19 22:55:57 +00:00
committed by android-build-merger
2 changed files with 13 additions and 4 deletions

View File

@@ -380,7 +380,7 @@ public final class ThreadedRenderer {
void destroy() {
mInitialized = false;
updateEnabledState(null);
nDestroy(mNativeProxy);
nDestroy(mNativeProxy, mRootNode.mNativeRenderNode);
}
/**
@@ -994,7 +994,7 @@ public final class ThreadedRenderer {
float lightX, float lightY, float lightZ);
private static native void nSetOpaque(long nativeProxy, boolean opaque);
private static native int nSyncAndDrawFrame(long nativeProxy, long[] frameInfo, int size);
private static native void nDestroy(long nativeProxy);
private static native void nDestroy(long nativeProxy, long rootRenderNode);
private static native void nRegisterAnimatingRenderNode(long rootRenderNode, long animatingNode);
private static native void nInvokeFunctor(long functor, boolean waitForCompletion);

View File

@@ -164,6 +164,13 @@ public:
mPendingAnimatingRenderNodes.clear();
}
void destroy() {
for (auto& renderNode : mPendingAnimatingRenderNodes) {
renderNode->animators().endAllStagingAnimators();
}
mPendingAnimatingRenderNodes.clear();
}
private:
sp<Looper> mLooper;
JavaVM* mVm;
@@ -476,7 +483,9 @@ static int android_view_ThreadedRenderer_syncAndDrawFrame(JNIEnv* env, jobject c
}
static void android_view_ThreadedRenderer_destroy(JNIEnv* env, jobject clazz,
jlong proxyPtr) {
jlong proxyPtr, jlong rootNodePtr) {
RootRenderNode* rootRenderNode = reinterpret_cast<RootRenderNode*>(rootNodePtr);
rootRenderNode->destroy();
RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
proxy->destroy();
}
@@ -698,7 +707,7 @@ static const JNINativeMethod gMethods[] = {
{ "nSetLightCenter", "(JFFF)V", (void*) android_view_ThreadedRenderer_setLightCenter },
{ "nSetOpaque", "(JZ)V", (void*) android_view_ThreadedRenderer_setOpaque },
{ "nSyncAndDrawFrame", "(J[JI)I", (void*) android_view_ThreadedRenderer_syncAndDrawFrame },
{ "nDestroy", "(J)V", (void*) android_view_ThreadedRenderer_destroy },
{ "nDestroy", "(JJ)V", (void*) android_view_ThreadedRenderer_destroy },
{ "nRegisterAnimatingRenderNode", "(JJ)V", (void*) android_view_ThreadedRenderer_registerAnimatingRenderNode },
{ "nInvokeFunctor", "(JZ)V", (void*) android_view_ThreadedRenderer_invokeFunctor },
{ "nCreateTextureLayer", "(J)J", (void*) android_view_ThreadedRenderer_createTextureLayer },