/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
// Setup properties, signals and actions using the type-registry.
DALI_TYPE_REGISTRATION_BEGIN(Toolkit::CanvasView, Toolkit::Control, Create);
DALI_PROPERTY_REGISTRATION(Toolkit, CanvasView, "viewBox", VECTOR2, VIEW_BOX)
+DALI_PROPERTY_REGISTRATION(Toolkit, CanvasView, "synchronousLoading", BOOLEAN, SYNCHRONOUS_LOADING)
DALI_TYPE_REGISTRATION_END()
} // anonymous namespace
mCanvasRenderer(CanvasRenderer::New(viewBox)),
mTexture(),
mTextureSet(),
- mSize(viewBox)
+ mSize(viewBox),
+ mIsSynchronous(true)
{
}
}
break;
}
+ case Toolkit::CanvasView::Property::SYNCHRONOUS_LOADING:
+ {
+ bool isSynchronous;
+ if(value.Get(isSynchronous))
+ {
+ canvasViewImpl.SetSynchronous(isSynchronous);
+ }
+ break;
+ }
}
}
}
value = canvasViewImpl.GetViewBox();
break;
}
+ case Toolkit::CanvasView::Property::SYNCHRONOUS_LOADING:
+ {
+ value = canvasViewImpl.IsSynchronous();
+ break;
+ }
}
}
return value;
if(mCanvasRenderer.Commit())
{
- AsyncTaskManager::Get().AddTask(mRasterizingTask);
+ if(mIsSynchronous)
+ {
+ mRasterizingTask->Process();
+ ApplyRasterizedImage(mRasterizingTask);
+ mRasterizingTask.Reset(); // We don't need it anymore.
+ }
+ else
+ {
+ AsyncTaskManager::Get().AddTask(mRasterizingTask);
+ }
}
}
mTextureSet = TextureSet::New();
Geometry geometry = VisualFactoryCache::CreateQuadGeometry();
- Shader shader = Shader::New(SHADER_CANVAS_VIEW_VERT, fragmentShader);
+ Shader shader = Shader::New(SHADER_CANVAS_VIEW_VERT, fragmentShader, Shader::Hint::NONE, "CANVAS_VIEW");
Renderer renderer = Renderer::New(geometry, shader);
renderer.SetTextures(mTextureSet);
}
}
+ mRasterizingTask.Reset(); // We don't need it anymore
+
//If there are accumulated changes to CanvasRenderer during Rasterize, Rasterize once again.
- if(mCanvasRenderer && mCanvasRenderer.IsCanvasChanged())
+ if(!mIsSynchronous && mCanvasRenderer && mCanvasRenderer.IsCanvasChanged())
{
AddRasterizationTask();
}
}
return Vector2::ZERO;
}
+
+void CanvasView::SetSynchronous(const bool isSynchronous)
+{
+ mIsSynchronous = isSynchronous;
+}
+
+const bool CanvasView::IsSynchronous()
+{
+ return mIsSynchronous;
+}
+
} // namespace Internal
} // namespace Toolkit
} // namespace Dali