diff options
Diffstat (limited to 'core/jni/android_view_ThreadedRenderer.cpp')
| -rw-r--r-- | core/jni/android_view_ThreadedRenderer.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp index 6ec6b00..7e6d335 100644 --- a/core/jni/android_view_ThreadedRenderer.cpp +++ b/core/jni/android_view_ThreadedRenderer.cpp @@ -166,12 +166,7 @@ public: // Runs any animations still left in mCurrentFrameAnimations virtual void runRemainingAnimations(TreeInfo& info) { AnimationContext::runRemainingAnimations(info); - // post all the finished stuff - if (mOnFinishedEvents.size()) { - sp<InvokeAnimationListeners> message - = new InvokeAnimationListeners(mOnFinishedEvents); - mRootNode->sendMessage(message); - } + postOnFinishedEvents(); } virtual void callOnFinished(BaseRenderNodeAnimator* animator, AnimationListener* listener) { @@ -179,9 +174,22 @@ public: mOnFinishedEvents.push_back(event); } + virtual void destroy() { + AnimationContext::destroy(); + postOnFinishedEvents(); + } + private: sp<RootRenderNode> mRootNode; std::vector<OnFinishedEvent> mOnFinishedEvents; + + void postOnFinishedEvents() { + if (mOnFinishedEvents.size()) { + sp<InvokeAnimationListeners> message + = new InvokeAnimationListeners(mOnFinishedEvents); + mRootNode->sendMessage(message); + } + } }; class ContextFactoryImpl : public IContextFactory { |
