+ mFrameRate = mVectorRenderer.GetFrameRate();
+ mFrameDurationMicroSeconds = MICROSECONDS_PER_SECOND / mFrameRate;
+
+ uint32_t width, height;
+ mVectorRenderer.GetDefaultSize(width, height);
+
+ SetSize(width, height);
+
+ DALI_LOG_INFO(gVectorAnimationLogFilter, Debug::Verbose, "VectorAnimationTask::Load: file = %s [%d frames, %f fps] [%p]\n", mUrl.c_str(), mTotalFrame, mFrameRate, this);
+
+ return true;
+}
+
+void VectorAnimationTask::SetRenderer(Renderer renderer)
+{
+ ConditionalWait::ScopedLock lock(mConditionalWait);
+
+ mVectorRenderer.SetRenderer(renderer);
+
+ DALI_LOG_INFO(gVectorAnimationLogFilter, Debug::Verbose, "VectorAnimationTask::SetRenderer [%p]\n", this);
+}
+
+void VectorAnimationTask::SetAnimationData(const AnimationData& data)
+{
+ ConditionalWait::ScopedLock lock(mConditionalWait);
+
+ DALI_LOG_INFO(gVectorAnimationLogFilter, Debug::Verbose, "VectorAnimationTask::SetAnimationData [%p]\n", this);
+
+ uint32_t index = mAnimationDataIndex == 0 ? 1 : 0; // Use the other buffer
+
+ mAnimationData[index] = data;
+ mAnimationDataUpdated = true;
+
+ if(data.resendFlag & VectorAnimationTask::RESEND_SIZE)
+ {
+ // The size should be changed in the main thread.
+ SetSize(data.width, data.height);
+ }
+
+ mVectorAnimationThread.AddTask(this);