Sometimes the VectorAnimationTask was not destructed because it tried to rasterize repeatedly.
Change-Id: Id4c6cc9bc32f8f5d4c5836e0b4fc9edf33eaa5f9
mForward( true ),
mUpdateFrameNumber( false ),
mNeedAnimationFinishedTrigger( true ),
mForward( true ),
mUpdateFrameNumber( false ),
mNeedAnimationFinishedTrigger( true ),
- mAnimationDataUpdated( false )
+ mAnimationDataUpdated( false ),
+ mDestroyTask( false )
}
mVectorRenderer.Finalize();
}
mVectorRenderer.Finalize();
}
void VectorAnimationTask::SetRenderer( Renderer renderer )
}
void VectorAnimationTask::SetRenderer( Renderer renderer )
bool stopped = false;
uint32_t currentFrame;
bool stopped = false;
uint32_t currentFrame;
+ {
+ ConditionalWait::ScopedLock lock( mConditionalWait );
+ if( mDestroyTask )
+ {
+ // The task will be destroyed. We don't need rasterization.
+ return false;
+ }
+ }
+
ApplyAnimationData();
if( mPlayState == PlayState::PLAYING && mUpdateFrameNumber )
ApplyAnimationData();
if( mPlayState == PlayState::PLAYING && mUpdateFrameNumber )
bool mUpdateFrameNumber;
bool mNeedAnimationFinishedTrigger;
bool mAnimationDataUpdated;
bool mUpdateFrameNumber;
bool mNeedAnimationFinishedTrigger;
bool mAnimationDataUpdated;
};
} // namespace Internal
};
} // namespace Internal