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:
@@ -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);
|
||||
|
||||
@@ -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 },
|
||||
|
||||
Reference in New Issue
Block a user