mLayerInfoCached(false),
mMarkerInfoCached(false),
mEnableFrameCache(false),
+ mNotifyAfterRasterization(false),
mSizeUpdated(false)
{
mVectorRenderer.UploadCompletedSignal().Connect(this, &VectorAnimationTask::OnUploadCompleted);
mVectorAnimationThread.RemoveEventTriggerCallbacks(mAnimationFinishedCallback.get());
mAnimationFinishedCallback.reset();
}
- if(mForceRenderOnceCallback)
- {
- mVectorAnimationThread.RemoveEventTriggerCallbacks(mForceRenderOnceCallback.get());
- mForceRenderOnceCallback.reset();
- }
if(mLoadCompletedCallback)
{
mVectorAnimationThread.RemoveEventTriggerCallbacks(mLoadCompletedCallback.get());
mAnimationFinishedCallback = std::unique_ptr<CallbackBase>(callback);
}
-void VectorAnimationTask::SetForceRenderOnceCallback(CallbackBase* callback)
-{
- Mutex::ScopedLock lock(mMutex);
- mForceRenderOnceCallback = std::unique_ptr<CallbackBase>(callback);
-}
-
void VectorAnimationTask::SetLoopCount(int32_t count)
{
if(mLoopCount != count)
}
// Forcely trigger render once if need.
- if(mNeedForceRenderOnceTrigger)
+ if(mNotifyAfterRasterization || mNeedForceRenderOnceTrigger)
{
Mutex::ScopedLock lock(mMutex);
- if(mForceRenderOnceCallback)
- {
- mVectorAnimationThread.AddEventTriggerCallback(mForceRenderOnceCallback.get(), mAppliedPlayStateId);
- }
+ mVectorAnimationThread.RequestForceRenderOnce();
mNeedForceRenderOnceTrigger = false;
}
SetCurrentFrameNumber(animationData.currentFrame);
}
+ if(animationData.resendFlag & VectorAnimationTask::RESEND_NOTIFY_AFTER_RASTERIZATION)
+ {
+ mNotifyAfterRasterization = animationData.notifyAfterRasterization;
+ }
+
if(animationData.resendFlag & VectorAnimationTask::RESEND_NEED_RESOURCE_READY)
{
mVectorRenderer.InvalidateBuffer();