[problem] Memory usage is too high, event-thread operations are too heavy.
[cause] Too much Dali::Handle data copied around.
[solution] Remove all virtual methods from handles, to avoid needing a C++ vptr
Change-Id: Ib03898bc8fe073d41e5a44cc49af91958d164ee1
Signed-off-by: Adeel Kazmi <adeel.kazmi@samsung.com>
static Actor DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Dali::Actor is intended as a base class
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Actor();
+ ~Actor();
/**
* @copydoc Dali::BaseHandle::operator=
static CameraActor DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~CameraActor();
+ ~CameraActor();
/**
* @copydoc Dali::BaseHandle::operator=
static CustomActor DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~CustomActor();
+ ~CustomActor();
/**
* @brief Retrieve the custom actor implementation.
static ImageActor DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~ImageActor();
+ ~ImageActor();
/**
* @copydoc Dali::BaseHandle::operator=
static Layer DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Layer();
+ ~Layer();
/**
* @copydoc Dali::BaseHandle::operator=
static MeshActor DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~MeshActor();
+ ~MeshActor();
/**
* @copydoc Dali::BaseHandle::operator=
static RenderableActor DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~RenderableActor();
+ ~RenderableActor();
/**
* @copydoc Dali::BaseHandle::operator=
static TextActor DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~TextActor();
+ ~TextActor();
/**
* @copydoc Dali::BaseHandle::operator=
ActiveConstraint();
/**
- * @brief Destructor.
+ * @brief Dali::ActiveConstraint is intended as a base class
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~ActiveConstraint();
+ ~ActiveConstraint();
/**
* @copydoc Dali::BaseHandle::operator=
static Animation DownCast( BaseHandle handle );
/**
- * @brief Destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Animation();
+ ~Animation();
/**
* @copydoc Dali::BaseHandle::operator=
static Constraint DownCast( BaseHandle handle );
/**
- * @brief Destructor.
+ * @brief Destructor
*
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Constraint();
+ ~Constraint();
/**
* @copydoc Dali::BaseHandle::operator=
KeyFrames();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~KeyFrames();
+ ~KeyFrames();
/**
* @copydoc Dali::BaseHandle::operator=
static bool IsInstalled();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Stage();
+ ~Stage();
/**
* @copydoc Dali::BaseHandle::operator=
static GestureDetector DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Dali::GestureDetector is intended as a base class
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~GestureDetector();
+ ~GestureDetector();
/**
* @copydoc Dali::BaseHandle::operator=
static LongPressGestureDetector DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~LongPressGestureDetector();
+ ~LongPressGestureDetector();
/**
* @copydoc Dali::BaseHandle::operator=
static PanGestureDetector DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~PanGestureDetector();
+ ~PanGestureDetector();
/**
* @copydoc Dali::BaseHandle::operator=
static PinchGestureDetector DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~PinchGestureDetector();
+ ~PinchGestureDetector();
/**
* @copydoc Dali::BaseHandle::operator=
static TapGestureDetector DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~TapGestureDetector();
+ ~TapGestureDetector();
/**
* @copydoc Dali::BaseHandle::operator=
/**
* @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~AnimatableMesh();
+ ~AnimatableMesh();
/**
* @brief Get the number of vertices with which this mesh was created.
static BitmapImage DownCast( BaseHandle handle );
/**
- * @brief Destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~BitmapImage();
+ ~BitmapImage();
/**
* @copydoc Dali::BaseHandle::operator=
static EncodedBufferImage DownCast( BaseHandle handle );
/**
- * @brief Destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
~EncodedBufferImage();
static FrameBufferImage DownCast( BaseHandle handle );
/**
- * @brief Destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~FrameBufferImage();
+ ~FrameBufferImage();
/**
* @copydoc Dali::BaseHandle::operator=
Image();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Image();
+ ~Image();
/**
* @copydoc Dali::BaseHandle::operator=
Material();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Material();
+ ~Material();
/**
* @copydoc Dali::BaseHandle::operator=
BaseHandle();
/**
- * @brief Dali::BaseHandle is intended as a base class.
+ * @brief Dali::BaseHandle is intended as a base class
+ *
+ * This is non-virtual since derived BaseHandle types must not contain data.
*/
- virtual ~BaseHandle();
+ ~BaseHandle();
/**
* @brief This copy constructor is required for (smart) pointer semantics.
static Constrainable DownCast( BaseHandle handle );
/**
- * @brief Dali::Handle is intended as a base class.
+ * @brief Dali::Constrainable is intended as a base class
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Constrainable();
+ ~Constrainable();
/**
* @brief This copy constructor is required for (smart) pointer semantics.
Handle();
/**
- * @brief Dali::Handle is intended as a base class.
+ * @brief Dali::Handle is intended as a base class
*
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Handle();
+ ~Handle();
/**
* @brief This copy constructor is required for (smart) pointer semantics.
ObjectRegistry();
/**
- * @brief Destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
~ObjectRegistry();
static PropertyNotification DownCast( BaseHandle handle );
/**
- * @brief Destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~PropertyNotification();
+ ~PropertyNotification();
/**
* @copydoc Dali::BaseHandle::operator=
static RenderTaskList DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~RenderTaskList();
+ ~RenderTaskList();
/**
* @copydoc Dali::BaseHandle::operator=
static RenderTask DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~RenderTask();
+ ~RenderTask();
/**
* @copydoc Dali::BaseHandle::operator=
static ShaderEffect DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~ShaderEffect();
+ ~ShaderEffect();
/**
* @brief Copy constructor
static const std::string GetFamilyForText(const Character& character);
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Font();
+ ~Font();
/**
* @copydoc Dali::BaseHandle::operator=
static LightActor DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~LightActor();
+ ~LightActor();
/**
* @copydoc Dali::BaseHandle::operator=
}
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Light();
+ ~Light();
/**
* @copydoc Dali::BaseHandle::operator=
DynamicsBodyConfig();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~DynamicsBodyConfig();
+ ~DynamicsBodyConfig();
/**
* @copydoc Dali::BaseHandle::operator=
DynamicsBody();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~DynamicsBody();
+ ~DynamicsBody();
/**
* @copydoc Dali::BaseHandle::operator=
DynamicsCollision();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~DynamicsCollision();
+ ~DynamicsCollision();
/**
* @copydoc Dali::BaseHandle::operator=
DynamicsJoint();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~DynamicsJoint();
+ ~DynamicsJoint();
/**
* @copydoc Dali::BaseHandle::operator=
DynamicsShape();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~DynamicsShape();
+ ~DynamicsShape();
/**
* @copydoc Dali::BaseHandle::operator=
DynamicsWorldConfig();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~DynamicsWorldConfig();
+ ~DynamicsWorldConfig();
/**
* @copydoc Dali::BaseHandle::operator=
DynamicsWorld();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~DynamicsWorld();
+ ~DynamicsWorld();
/**
* @copydoc Dali::BaseHandle::operator=
Cloth();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Cloth();
+ ~Cloth();
/**
* @copydoc Dali::BaseHandle::operator=
Mesh();
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Mesh();
+ ~Mesh();
/**
* @copydoc Dali::BaseHandle::operator=
static bool IsColorGlyph( const Character& character );
/**
- * @brief Destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~GlyphImage();
+ ~GlyphImage();
/**
* @copydoc Dali::BaseHandle::operator=
static NinePatchImage DownCast( BaseHandle handle );
/**
- * @brief Destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~NinePatchImage();
+ ~NinePatchImage();
/**
* @copydoc Dali::BaseHandle::operator=
static Entity DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Entity();
+ ~Entity();
/**
* @copydoc Dali::BaseHandle::operator=
static ModelData DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~ModelData();
+ ~ModelData();
/**
* @copydoc Dali::BaseHandle::operator=
static Model DownCast( BaseHandle handle );
/**
- * @brief Virtual destructor.
+ * @brief Destructor
*
- * Dali::Object derived classes typically do not contain member data.
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~Model();
+ ~Model();
/**
* @copydoc Dali::BaseHandle::operator=
TypeInfo();
/**
- * @brief destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- virtual ~TypeInfo();
+ ~TypeInfo();
/**
* @copydoc Dali::BaseHandle::operator=