Dali::TypeRegistration type(typeid(Dali::CanvasRenderer), typeid(Dali::BaseHandle), Create);
+#ifdef THORVG_SUPPORT
+constexpr uint32_t CANVAS_RENDERER_QUEUE_SIZE = 2u; ///< The number of buffers in native image queue.
+ ///< Let we use double-buffer as default.
+#endif
+
} // unnamed namespace
CanvasRendererTizen* CanvasRendererTizen::New(const Vector2& viewBox)
#ifdef THORVG_SUPPORT
Mutex::ScopedLock lock(mMutex);
- if(mNativeImageQueue && mNativeImageQueue->CanDequeueBuffer())
+ if(mNativeImageQueue)
{
+ bool canDequeue = mNativeImageQueue->CanDequeueBuffer();
+ if(!canDequeue)
+ {
+ // Ignore the previous image which is inserted to the queue.
+ mNativeImageQueue->IgnoreSourceImage();
+
+ // Check again
+ canDequeue = mNativeImageQueue->CanDequeueBuffer();
+ if(!canDequeue)
+ {
+ return false;
+ }
+ }
+
uint32_t width, height, stride;
uint8_t* buffer = mNativeImageQueue->DequeueBuffer(width, height, stride);
if(!buffer)
#ifdef THORVG_SUPPORT
if(!mNativeImageQueue)
{
- mNativeImageQueue = Dali::NativeImageSourceQueue::New(size.width, size.height, Dali::NativeImageSourceQueue::ColorFormat::BGRA8888);
+ mNativeImageQueue = Dali::NativeImageSourceQueue::New(CANVAS_RENDERER_QUEUE_SIZE, size.width, size.height, Dali::NativeImageSourceQueue::ColorFormat::BGRA8888);
}
else
{