X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fcommon%2Fanimatable-property.h;h=ebc2c82b05efbc6ea7a7a26af65842f2b9a56c89;hb=d28979e5a4966c85c3fb6cf1d9f39c942e487fe8;hp=3415f8318d400f8aaa33e4df36442c71f70aba40;hpb=2b82e64c69f174f27b440c8996386b7f2576828e;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/common/animatable-property.h b/dali/internal/update/common/animatable-property.h index 3415f83..ebc2c82 100644 --- a/dali/internal/update/common/animatable-property.h +++ b/dali/internal/update/common/animatable-property.h @@ -1,8 +1,8 @@ -#ifndef __DALI_INTERNAL_SCENE_GRAPH_ANIMATABLE_PROPERTY_H__ -#define __DALI_INTERNAL_SCENE_GRAPH_ANIMATABLE_PROPERTY_H__ +#ifndef DALI_INTERNAL_SCENE_GRAPH_ANIMATABLE_PROPERTY_H +#define DALI_INTERNAL_SCENE_GRAPH_ANIMATABLE_PROPERTY_H /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -22,26 +22,23 @@ #include // INTERNAL INCLUDES -#include -#include -#include -#include #include #include #include #include #include #include +#include +#include +#include +#include namespace Dali { - namespace Internal { - namespace SceneGraph { - /** * Dirty flags record whether an animatable property has changed. * In the frame following a change, the property is reset to a base value. @@ -52,11 +49,12 @@ namespace SceneGraph * However if the property was only "Set" (and not "Baked"), then typically the base value and previous value will not match. * In this case the reset operation is equivalent to a "Bake", and the value is considered "dirty" for an additional frame. */ -static const unsigned int CLEAN_FLAG = 0x00; ///< Indicates that the value did not change in this, or the previous frame -static const unsigned int BAKED_FLAG = 0x01; ///< Indicates that the value was Baked during the previous frame -static const unsigned int SET_FLAG = 0x02; ///< Indicates that the value was Set during the previous frame +static const uint32_t CLEAN_FLAG = 0x00; ///< Indicates that the value did not change in this, or the previous frame +static const uint32_t BAKED_FLAG = 0x01; ///< Indicates that the value was Baked during the previous frame +static const uint32_t SET_FLAG = 0x02; ///< Indicates that the value was Set during the previous frame +static const uint32_t RESET_FLAG = 0x02; ///< Indicates that the value should be reset to the base value in the next two frames -template +template class AnimatableProperty; /** @@ -65,23 +63,21 @@ class AnimatableProperty; class AnimatablePropertyBase : public PropertyBase { public: - /** * Constructor, initialize the dirty flag */ AnimatablePropertyBase() : PropertyBase(), - mDirtyFlags( BAKED_FLAG ) - {} + mDirtyFlags(BAKED_FLAG) + { + } /** * Virtual destructor. */ - virtual ~AnimatablePropertyBase() - {} + ~AnimatablePropertyBase() override = default; protected: // for derived classes - /** * Flag that the property has been Set during the current frame. */ @@ -98,60 +94,63 @@ protected: // for derived classes mDirtyFlags = BAKED_FLAG; } -public: // From PropertyBase +public: /** + * Mark the property as dirty so that it will be reset to the base value in the next two frames. + */ + void MarkAsDirty() + { + mDirtyFlags = RESET_FLAG; + } + +public: // From PropertyBase + /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::IsClean() */ - virtual bool IsClean() const + bool IsClean() const override { - return ( CLEAN_FLAG == mDirtyFlags ); + return (CLEAN_FLAG == mDirtyFlags); } /** * @copydoc Dali::Internal::PropertyInputImpl::InputInitialized() */ - virtual bool InputInitialized() const + bool InputInitialized() const override { return true; // Animatable properties are always valid } -protected: // so that ResetToBaseValue can set it directly - - unsigned int mDirtyFlags; ///< Flag whether value changed during previous 2 frames - +protected: // so that ResetToBaseValue can set it directly + uint32_t mDirtyFlags; ///< Flag whether value changed during previous 2 frames }; - /** * An boolean animatable property of a scene-graph object. */ -template <> +template<> class AnimatableProperty : public AnimatablePropertyBase { public: - /** * Create an animatable property. * @param [in] initialValue The initial value of the property. */ - AnimatableProperty( bool initialValue ) - : mValue( initialValue ), - mBaseValue( initialValue ) + AnimatableProperty(bool initialValue) + : mValue(initialValue), + mBaseValue(initialValue) { } /** * Virtual destructor. */ - virtual ~AnimatableProperty() - { - } + ~AnimatableProperty() override = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() */ - virtual Dali::Property::Type GetType() const + Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } @@ -159,22 +158,22 @@ public: /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::ResetToBaseValue() */ - virtual void ResetToBaseValue(BufferIndex updateBufferIndex) + void ResetToBaseValue(BufferIndex updateBufferIndex) override { - if (CLEAN_FLAG != mDirtyFlags) + if(CLEAN_FLAG != mDirtyFlags) { mValue[updateBufferIndex] = mBaseValue; - mDirtyFlags = ( mDirtyFlags >> 1 ); + mDirtyFlags = (mDirtyFlags >> 1); } } /** * @copydoc Dali::Internal::PropertyInputImpl::GetBoolean() */ - virtual const bool& GetBoolean( BufferIndex bufferIndex ) const + const bool& GetBoolean(BufferIndex bufferIndex) const override { - return mValue[ bufferIndex ]; + return mValue[bufferIndex]; } /** @@ -186,7 +185,7 @@ public: void Set(BufferIndex bufferIndex, bool value) { // check if the value actually changed to avoid dirtying nodes unnecessarily - if( mValue[bufferIndex] != value ) + if(mValue[bufferIndex] != value) { mValue[bufferIndex] = value; @@ -203,9 +202,9 @@ public: { // check if the value actually changed to avoid dirtying nodes unnecessarily // false + false does not change value, true + false does not either - if( delta && !mValue[bufferIndex] ) + if(delta && !mValue[bufferIndex]) { - mValue[bufferIndex] += delta; + mValue[bufferIndex] = delta; OnSet(); } @@ -214,7 +213,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - bool& Get(size_t bufferIndex) + bool& Get(BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -222,7 +221,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - const bool& Get(size_t bufferIndex) const + const bool& Get(BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -232,7 +231,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - bool& operator[](size_t bufferIndex) + bool& operator[](BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -242,7 +241,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const bool& operator[](size_t bufferIndex) const + const bool& operator[](BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -255,10 +254,13 @@ public: void Bake(BufferIndex bufferIndex, bool value) { // bake has to check the base value as current buffer value can be correct by constraint or something else - if( mBaseValue != value ) + if(mBaseValue != value) { mBaseValue = value; - mValue[bufferIndex] = value; + // It's ok to bake both buffers as render is performed in same thread as update. Reading from event side + // has never been atomically safe. + mValue[bufferIndex] = value; + mValue[1 - bufferIndex] = value; OnBake(); } @@ -271,14 +273,13 @@ public: */ void BakeRelative(BufferIndex bufferIndex, bool delta) { - mValue[bufferIndex] += delta; - mBaseValue = mValue[bufferIndex]; + mValue[bufferIndex] = mValue[bufferIndex] || delta; + mBaseValue = mValue[bufferIndex]; OnBake(); } private: - // Undefined AnimatableProperty(const AnimatableProperty& property); @@ -286,42 +287,36 @@ private: AnimatableProperty& operator=(const AnimatableProperty& rhs); private: - - DoubleBuffered mValue; ///< The double-buffered property value - bool mBaseValue; ///< Reset to this base value at the beginning of each frame - + DoubleBuffered mValue; ///< The double-buffered property value + bool mBaseValue; ///< Reset to this base value at the beginning of each frame }; - /** * An integer animatable property of a scene-graph object. */ -template <> +template<> class AnimatableProperty : public AnimatablePropertyBase { public: - /** * Create an animatable property. * @param [in] initialValue The initial value of the property. */ - AnimatableProperty( int initialValue ) - : mValue( initialValue ), - mBaseValue( initialValue ) + AnimatableProperty(int initialValue) + : mValue(initialValue), + mBaseValue(initialValue) { } /** * Virtual destructor. */ - virtual ~AnimatableProperty() - { - } + ~AnimatableProperty() override = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() */ - virtual Dali::Property::Type GetType() const + Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } @@ -329,22 +324,22 @@ public: /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::ResetToBaseValue() */ - virtual void ResetToBaseValue(BufferIndex updateBufferIndex) + void ResetToBaseValue(BufferIndex updateBufferIndex) override { - if (CLEAN_FLAG != mDirtyFlags) + if(CLEAN_FLAG != mDirtyFlags) { mValue[updateBufferIndex] = mBaseValue; - mDirtyFlags = ( mDirtyFlags >> 1 ); + mDirtyFlags = (mDirtyFlags >> 1); } } /** * @copydoc Dali::Internal::PropertyInputImpl::GetInteger() */ - virtual const int& GetInteger( BufferIndex bufferIndex ) const + const int& GetInteger(BufferIndex bufferIndex) const override { - return mValue[ bufferIndex ]; + return mValue[bufferIndex]; } /** @@ -375,7 +370,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - int& Get(size_t bufferIndex) + int& Get(BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -383,7 +378,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - const int& Get(size_t bufferIndex) const + const int& Get(BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -393,7 +388,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - int& operator[](size_t bufferIndex) + int& operator[](BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -403,7 +398,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const int& operator[](size_t bufferIndex) const + const int& operator[](BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -415,8 +410,9 @@ public: */ void Bake(BufferIndex bufferIndex, int value) { - mValue[bufferIndex] = value; - mBaseValue = mValue[bufferIndex]; + mValue[bufferIndex] = value; + mValue[1 - bufferIndex] = value; + mBaseValue = mValue[bufferIndex]; OnBake(); } @@ -429,7 +425,7 @@ public: void BakeRelative(BufferIndex bufferIndex, int delta) { mValue[bufferIndex] = mValue[bufferIndex] + delta; - mBaseValue = mValue[bufferIndex]; + mBaseValue = mValue[bufferIndex]; OnBake(); } @@ -453,193 +449,12 @@ public: */ void SetInitialRelative(const int& delta) { - mValue[0] = mValue[0] + delta; - mValue[1] = mValue[0]; - mBaseValue = mValue[0]; - } - -private: - - // Undefined - AnimatableProperty(const AnimatableProperty& property); - - // Undefined - AnimatableProperty& operator=(const AnimatableProperty& rhs); - -private: - - DoubleBuffered mValue; ///< The double-buffered property value - int mBaseValue; ///< Reset to this base value at the beginning of each frame - -}; - -/** - * An unsigned integer animatable property of a scene-graph object. - */ -template <> -class AnimatableProperty : public AnimatablePropertyBase -{ -public: - - /** - * Create an animatable property. - * @param [in] initialValue The initial value of the property. - */ - AnimatableProperty( unsigned int initialValue ) - : mValue( initialValue ), - mBaseValue( initialValue ) - { - } - - /** - * Virtual destructor. - */ - virtual ~AnimatableProperty() - { - } - - /** - * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() - */ - virtual Dali::Property::Type GetType() const - { - return Dali::PropertyTypes::Get(); - } - - /** - * @copydoc Dali::Internal::SceneGraph::PropertyBase::ResetToBaseValue() - */ - virtual void ResetToBaseValue(BufferIndex updateBufferIndex) - { - if (CLEAN_FLAG != mDirtyFlags) - { - mValue[updateBufferIndex] = mBaseValue; - - mDirtyFlags = ( mDirtyFlags >> 1 ); - } - } - - /** - * @copydoc Dali::Internal::PropertyInputImpl::GetUnsignedInteger() - */ - virtual const unsigned int& GetUnsignedInteger( BufferIndex bufferIndex ) const - { - return mValue[ bufferIndex ]; - } - - /** - * Set the property value. This will only persist for the current frame; the property - * will be reset with the base value, at the beginning of the next frame. - * @param[in] bufferIndex The buffer to write. - * @param[in] value The new property value. - */ - void Set(BufferIndex bufferIndex, unsigned int value) - { - mValue[bufferIndex] = value; - - OnSet(); - } - - /** - * Change the property value by a relative amount. - * @param[in] bufferIndex The buffer to write. - * @param[in] delta The property will change by this amount. - */ - void SetRelative(BufferIndex bufferIndex, unsigned int delta) - { - mValue[bufferIndex] = mValue[bufferIndex] + delta; - - OnSet(); - } - - /** - * @copydoc Dali::SceneGraph::AnimatableProperty::Get() - */ - unsigned int& Get(size_t bufferIndex) - { - return mValue[bufferIndex]; - } - - /** - * @copydoc Dali::SceneGraph::AnimatableProperty::Get() - */ - const unsigned int& Get(size_t bufferIndex) const - { - return mValue[bufferIndex]; - } - - /** - * Retrieve the property value. - * @param[in] bufferIndex The buffer to read. - * @return The property value. - */ - unsigned int& operator[](size_t bufferIndex) - { - return mValue[bufferIndex]; - } - - /** - * Retrieve the property value. - * @param[in] bufferIndex The buffer to read. - * @return The property value. - */ - const unsigned int& operator[](size_t bufferIndex) const - { - return mValue[bufferIndex]; - } - - /** - * Set both the property value & base value. - * @param[in] bufferIndex The buffer to write for the property value. - * @param[in] value The new property value. - */ - void Bake(BufferIndex bufferIndex, unsigned int value) - { - mValue[bufferIndex] = value; - mBaseValue = mValue[bufferIndex]; - - OnBake(); - } - - /** - * Change the property value & base value by a relative amount. - * @param[in] bufferIndex The buffer to write for the local property value. - * @param[in] delta The property will change by this amount. - */ - void BakeRelative(BufferIndex bufferIndex, unsigned int delta) - { - mValue[bufferIndex] = mValue[bufferIndex] + delta; - mBaseValue = mValue[bufferIndex]; - - OnBake(); - } - - /** - * Sets both double-buffered values & the base value. - * This should only be used when the owning object has not been connected to the scene-graph. - * @param[in] value The new property value. - */ - void SetInitial(const unsigned int& value) - { - mValue[0] = value; + mValue[0] = mValue[0] + delta; mValue[1] = mValue[0]; mBaseValue = mValue[0]; } - /** - * Change both double-buffered values & the base value by a relative amount. - * This should only be used when the owning object has not been connected to the scene-graph. - * @param[in] delta The property will change by this amount. - */ - void SetInitialRelative(const unsigned int& delta) - { - mValue[0] = mValue[0] + delta; - mValue[1] = mValue[0]; - mBaseValue = mValue[0]; - } - private: - // Undefined AnimatableProperty(const AnimatableProperty& property); @@ -647,40 +462,36 @@ private: AnimatableProperty& operator=(const AnimatableProperty& rhs); private: - DoubleBuffered mValue; ///< The double-buffered property value - unsigned int mBaseValue; ///< Reset to this base value at the beginning of each frame + DoubleBuffered mValue; ///< The double-buffered property value + int mBaseValue; ///< Reset to this base value at the beginning of each frame }; - /** * An float animatable property of a scene-graph object. */ -template <> +template<> class AnimatableProperty : public AnimatablePropertyBase { public: - /** * Create an animatable property. * @param [in] initialValue The initial value of the property. */ - AnimatableProperty( float initialValue ) - : mValue( initialValue ), - mBaseValue( initialValue ) + AnimatableProperty(float initialValue) + : mValue(initialValue), + mBaseValue(initialValue) { } /** * Virtual destructor. */ - virtual ~AnimatableProperty() - { - } + ~AnimatableProperty() override = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() */ - virtual Dali::Property::Type GetType() const + Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } @@ -688,22 +499,22 @@ public: /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::ResetToBaseValue() */ - virtual void ResetToBaseValue(BufferIndex updateBufferIndex) + void ResetToBaseValue(BufferIndex updateBufferIndex) override { - if (CLEAN_FLAG != mDirtyFlags) + if(CLEAN_FLAG != mDirtyFlags) { mValue[updateBufferIndex] = mBaseValue; - mDirtyFlags = ( mDirtyFlags >> 1 ); + mDirtyFlags = (mDirtyFlags >> 1); } } /** * @copydoc Dali::Internal::PropertyInputImpl::GetFloat() */ - virtual const float& GetFloat( BufferIndex bufferIndex ) const + const float& GetFloat(BufferIndex bufferIndex) const override { - return mValue[ bufferIndex ]; + return mValue[bufferIndex]; } /** @@ -734,7 +545,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - float& Get(size_t bufferIndex) + float& Get(BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -742,7 +553,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - const float& Get(size_t bufferIndex) const + const float& Get(BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -752,7 +563,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - float& operator[](size_t bufferIndex) + float& operator[](BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -762,7 +573,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const float& operator[](size_t bufferIndex) const + const float& operator[](BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -774,8 +585,11 @@ public: */ void Bake(BufferIndex bufferIndex, float value) { - mValue[bufferIndex] = value; - mBaseValue = mValue[bufferIndex]; + // It's ok to bake both buffers as render is performed in same thread as update. Reading from event side + // has never been atomically safe. + mValue[bufferIndex] = value; + mValue[1 - bufferIndex] = value; + mBaseValue = mValue[bufferIndex]; OnBake(); } @@ -788,7 +602,7 @@ public: void BakeRelative(BufferIndex bufferIndex, float delta) { mValue[bufferIndex] = mValue[bufferIndex] + delta; - mBaseValue = mValue[bufferIndex]; + mBaseValue = mValue[bufferIndex]; OnBake(); } @@ -812,13 +626,12 @@ public: */ void SetInitialRelative(const float& delta) { - mValue[0] = mValue[0] + delta; - mValue[1] = mValue[0]; + mValue[0] = mValue[0] + delta; + mValue[1] = mValue[0]; mBaseValue = mValue[0]; } private: - // Undefined AnimatableProperty(const AnimatableProperty& property); @@ -826,40 +639,36 @@ private: AnimatableProperty& operator=(const AnimatableProperty& rhs); private: - - DoubleBuffered mValue; ///< The double-buffered property value - float mBaseValue; ///< Reset to this base value at the beginning of each frame + DoubleBuffered mValue; ///< The double-buffered property value + float mBaseValue; ///< Reset to this base value at the beginning of each frame }; /** * An Vector2 animatable property of a scene-graph object. */ -template <> +template<> class AnimatableProperty : public AnimatablePropertyBase { public: - /** * Create an animatable property. * @param [in] initialValue The initial value of the property. */ - AnimatableProperty( const Vector2& initialValue ) - : mValue( initialValue ), - mBaseValue( initialValue ) + AnimatableProperty(const Vector2& initialValue) + : mValue(initialValue), + mBaseValue(initialValue) { } /** * Virtual destructor. */ - virtual ~AnimatableProperty() - { - } + ~AnimatableProperty() override = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() */ - virtual Dali::Property::Type GetType() const + Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } @@ -867,22 +676,22 @@ public: /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::ResetToBaseValue() */ - virtual void ResetToBaseValue(BufferIndex updateBufferIndex) + void ResetToBaseValue(BufferIndex updateBufferIndex) override { - if (CLEAN_FLAG != mDirtyFlags) + if(CLEAN_FLAG != mDirtyFlags) { mValue[updateBufferIndex] = mBaseValue; - mDirtyFlags = ( mDirtyFlags >> 1 ); + mDirtyFlags = (mDirtyFlags >> 1); } } /** * @copydoc Dali::PropertyInput::GetVector2() */ - virtual const Vector2& GetVector2( BufferIndex bufferIndex ) const + const Vector2& GetVector2(BufferIndex bufferIndex) const override { - return mValue[ bufferIndex ]; + return mValue[bufferIndex]; } /** @@ -963,7 +772,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - Vector2& Get(size_t bufferIndex) + Vector2& Get(BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -971,7 +780,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - const Vector2& Get(size_t bufferIndex) const + const Vector2& Get(BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -981,7 +790,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - Vector2& operator[](size_t bufferIndex) + Vector2& operator[](BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -991,7 +800,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const Vector2& operator[](size_t bufferIndex) const + const Vector2& operator[](BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -1003,8 +812,11 @@ public: */ void Bake(BufferIndex bufferIndex, const Vector2& value) { - mValue[bufferIndex] = value; - mBaseValue = value; + // It's ok to bake both buffers as render is performed in same thread as update. Reading from event side + // has never been atomically safe. + mValue[bufferIndex] = value; + mValue[1 - bufferIndex] = value; + mBaseValue = value; OnBake(); } @@ -1016,8 +828,9 @@ public: */ void BakeX(BufferIndex bufferIndex, float value) { - mValue[bufferIndex].x = value; - mBaseValue.x = value; + mValue[bufferIndex].x = value; + mValue[1 - bufferIndex].x = value; + mBaseValue.x = value; OnBake(); } @@ -1029,8 +842,9 @@ public: */ void BakeY(BufferIndex bufferIndex, float value) { - mValue[bufferIndex].y = value; - mBaseValue.y = value; + mValue[bufferIndex].y = value; + mValue[1 - bufferIndex].y = value; + mBaseValue.y = value; OnBake(); } @@ -1075,7 +889,6 @@ public: } private: - // Undefined AnimatableProperty(const AnimatableProperty& property); @@ -1083,20 +896,17 @@ private: AnimatableProperty& operator=(const AnimatableProperty& rhs); private: - - DoubleBuffered mValue; ///< The double-buffered property value - Vector2 mBaseValue; ///< Reset to this base value at the beginning of each frame - + DoubleBuffered mValue; ///< The double-buffered property value + Vector2 mBaseValue; ///< Reset to this base value at the beginning of each frame }; /** * A Vector3 animatable property of a scene-graph object. */ -template <> +template<> class AnimatableProperty : public AnimatablePropertyBase { public: - /** * Create an animatable property. */ @@ -1110,23 +920,21 @@ public: * Create an animatable property. * @param [in] initialValue The initial value of the property. */ - AnimatableProperty( const Vector3& initialValue ) - : mValue( initialValue ), - mBaseValue( initialValue ) + AnimatableProperty(const Vector3& initialValue) + : mValue(initialValue), + mBaseValue(initialValue) { } /** * Virtual destructor. */ - virtual ~AnimatableProperty() - { - } + ~AnimatableProperty() override = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() */ - virtual Dali::Property::Type GetType() const + Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } @@ -1134,22 +942,22 @@ public: /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::ResetToBaseValue() */ - virtual void ResetToBaseValue(BufferIndex updateBufferIndex) + void ResetToBaseValue(BufferIndex updateBufferIndex) override { - if (CLEAN_FLAG != mDirtyFlags) + if(CLEAN_FLAG != mDirtyFlags) { mValue[updateBufferIndex] = mBaseValue; - mDirtyFlags = ( mDirtyFlags >> 1 ); + mDirtyFlags = (mDirtyFlags >> 1); } } /** * @copydoc Dali::PropertyInput::GetVector3() */ - virtual const Vector3& GetVector3( BufferIndex bufferIndex ) const + const Vector3& GetVector3(BufferIndex bufferIndex) const override { - return mValue[ bufferIndex ]; + return mValue[bufferIndex]; } /** @@ -1255,7 +1063,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - Vector3& Get(size_t bufferIndex) + Vector3& Get(BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -1263,7 +1071,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - const Vector3& Get(size_t bufferIndex) const + const Vector3& Get(BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -1273,7 +1081,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - Vector3& operator[](size_t bufferIndex) + Vector3& operator[](BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -1283,7 +1091,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const Vector3& operator[](size_t bufferIndex) const + const Vector3& operator[](BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -1295,8 +1103,9 @@ public: */ void Bake(BufferIndex bufferIndex, const Vector3& value) { - mValue[bufferIndex] = value; - mBaseValue = value; + mValue[bufferIndex] = value; + mValue[1 - bufferIndex] = value; + mBaseValue = value; OnBake(); } @@ -1308,8 +1117,9 @@ public: */ void BakeX(BufferIndex bufferIndex, float value) { - mValue[bufferIndex].x = value; - mBaseValue.x = value; + mValue[bufferIndex].x = value; + mValue[1 - bufferIndex].x = value; + mBaseValue.x = value; OnBake(); } @@ -1321,8 +1131,9 @@ public: */ void BakeY(BufferIndex bufferIndex, float value) { - mValue[bufferIndex].y = value; - mBaseValue.y = value; + mValue[bufferIndex].y = value; + mValue[1 - bufferIndex].y = value; + mBaseValue.y = value; OnBake(); } @@ -1334,8 +1145,9 @@ public: */ void BakeZ(BufferIndex bufferIndex, float value) { - mValue[bufferIndex].z = value; - mBaseValue.z = value; + mValue[bufferIndex].z = value; + mValue[1 - bufferIndex].z = value; + mBaseValue.z = value; OnBake(); } @@ -1406,7 +1218,6 @@ public: } private: - // Undefined AnimatableProperty(const AnimatableProperty& property); @@ -1414,41 +1225,36 @@ private: AnimatableProperty& operator=(const AnimatableProperty& rhs); private: - - DoubleBuffered mValue; ///< The double-buffered property value - Vector3 mBaseValue; ///< Reset to this base value at the beginning of each frame - + DoubleBuffered mValue; ///< The double-buffered property value + Vector3 mBaseValue; ///< Reset to this base value at the beginning of each frame }; /** * A Vector4 animatable property of a scene-graph object. */ -template <> +template<> class AnimatableProperty : public AnimatablePropertyBase { public: - /** * Create an animatable property. * @param [in] initialValue The initial value of the property. */ - AnimatableProperty( const Vector4& initialValue ) - : mValue( initialValue ), - mBaseValue( initialValue ) + AnimatableProperty(const Vector4& initialValue) + : mValue(initialValue), + mBaseValue(initialValue) { } /** * Virtual destructor. */ - virtual ~AnimatableProperty() - { - } + ~AnimatableProperty() override = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() */ - virtual Dali::Property::Type GetType() const + Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } @@ -1456,22 +1262,22 @@ public: /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::ResetToBaseValue() */ - virtual void ResetToBaseValue(BufferIndex updateBufferIndex) + void ResetToBaseValue(BufferIndex updateBufferIndex) override { - if (CLEAN_FLAG != mDirtyFlags) + if(CLEAN_FLAG != mDirtyFlags) { mValue[updateBufferIndex] = mBaseValue; - mDirtyFlags = ( mDirtyFlags >> 1 ); + mDirtyFlags = (mDirtyFlags >> 1); } } /** * @copydoc Dali::PropertyInput::GetVector4() */ - virtual const Vector4& GetVector4( BufferIndex bufferIndex ) const + const Vector4& GetVector4(BufferIndex bufferIndex) const override { - return mValue[ bufferIndex ]; + return mValue[bufferIndex]; } /** @@ -1602,7 +1408,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - Vector4& Get(size_t bufferIndex) + Vector4& Get(BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -1610,7 +1416,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - const Vector4& Get(size_t bufferIndex) const + const Vector4& Get(BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -1620,7 +1426,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - Vector4& operator[](size_t bufferIndex) + Vector4& operator[](BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -1630,7 +1436,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const Vector4& operator[](size_t bufferIndex) const + const Vector4& operator[](BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -1642,8 +1448,9 @@ public: */ void Bake(BufferIndex bufferIndex, const Vector4& value) { - mValue[bufferIndex] = value; - mBaseValue = mValue[bufferIndex]; + mValue[bufferIndex] = value; + mValue[1 - bufferIndex] = value; + mBaseValue = mValue[bufferIndex]; OnBake(); } @@ -1655,8 +1462,9 @@ public: */ void BakeX(BufferIndex bufferIndex, float value) { - mValue[bufferIndex].x = value; - mBaseValue.x = mValue[bufferIndex].x; + mValue[bufferIndex].x = value; + mValue[1 - bufferIndex].x = value; + mBaseValue.x = mValue[bufferIndex].x; OnBake(); } @@ -1668,8 +1476,9 @@ public: */ void BakeY(BufferIndex bufferIndex, float value) { - mValue[bufferIndex].y = value; - mBaseValue.y = mValue[bufferIndex].y; + mValue[bufferIndex].y = value; + mValue[1 - bufferIndex].y = value; + mBaseValue.y = mValue[bufferIndex].y; OnBake(); } @@ -1681,8 +1490,9 @@ public: */ void BakeZ(BufferIndex bufferIndex, float value) { - mValue[bufferIndex].z = value; - mBaseValue.z = mValue[bufferIndex].z; + mValue[bufferIndex].z = value; + mValue[1 - bufferIndex].z = value; + mBaseValue.z = mValue[bufferIndex].z; OnBake(); } @@ -1694,8 +1504,9 @@ public: */ void BakeW(BufferIndex bufferIndex, float value) { - mValue[bufferIndex].w = value; - mBaseValue.w = mValue[bufferIndex].w; + mValue[bufferIndex].w = value; + mValue[1 - bufferIndex].w = value; + mBaseValue.w = mValue[bufferIndex].w; OnBake(); } @@ -1708,7 +1519,7 @@ public: void BakeRelative(BufferIndex bufferIndex, const Vector4& delta) { mValue[bufferIndex] = mValue[bufferIndex] + delta; - mBaseValue = mValue[bufferIndex]; + mBaseValue = mValue[bufferIndex]; OnBake(); } @@ -1721,7 +1532,7 @@ public: void BakeXRelative(BufferIndex bufferIndex, float delta) { mValue[bufferIndex].x = mValue[bufferIndex].x + delta; - mBaseValue.x = mValue[bufferIndex].x; + mBaseValue.x = mValue[bufferIndex].x; OnBake(); } @@ -1734,7 +1545,7 @@ public: void BakeYRelative(BufferIndex bufferIndex, float delta) { mValue[bufferIndex].y = mValue[bufferIndex].y + delta; - mBaseValue.y = mValue[bufferIndex].y; + mBaseValue.y = mValue[bufferIndex].y; OnBake(); } @@ -1747,7 +1558,7 @@ public: void BakeZRelative(BufferIndex bufferIndex, float delta) { mValue[bufferIndex].z = mValue[bufferIndex].z + delta; - mBaseValue.z = mValue[bufferIndex].z; + mBaseValue.z = mValue[bufferIndex].z; OnBake(); } @@ -1760,7 +1571,7 @@ public: void BakeWRelative(BufferIndex bufferIndex, float delta) { mValue[bufferIndex].w = mValue[bufferIndex].w + delta; - mBaseValue.w = mValue[bufferIndex].w; + mBaseValue.w = mValue[bufferIndex].w; OnBake(); } @@ -1778,7 +1589,6 @@ public: } private: - // Undefined AnimatableProperty(const AnimatableProperty& property); @@ -1786,19 +1596,16 @@ private: AnimatableProperty& operator=(const AnimatableProperty& rhs); private: - - DoubleBuffered mValue; ///< The double-buffered property value - Vector4 mBaseValue; ///< Reset to this base value at the beginning of each frame - + DoubleBuffered mValue; ///< The double-buffered property value + Vector4 mBaseValue; ///< Reset to this base value at the beginning of each frame }; /** * An Quaternion animatable property of a scene-graph object. */ -template <> +template<> class AnimatableProperty : public AnimatablePropertyBase { public: - /** * Create an animatable property. */ @@ -1812,23 +1619,21 @@ public: * Create an animatable property. * @param [in] initialValue The initial value of the property. */ - AnimatableProperty( const Quaternion& initialValue ) - : mValue( initialValue ), - mBaseValue( initialValue ) + AnimatableProperty(const Quaternion& initialValue) + : mValue(initialValue), + mBaseValue(initialValue) { } /** * Virtual destructor. */ - virtual ~AnimatableProperty() - { - } + ~AnimatableProperty() override = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() */ - virtual Dali::Property::Type GetType() const + Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } @@ -1836,22 +1641,22 @@ public: /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::ResetToBaseValue() */ - virtual void ResetToBaseValue(BufferIndex updateBufferIndex) + void ResetToBaseValue(BufferIndex updateBufferIndex) override { - if (CLEAN_FLAG != mDirtyFlags) + if(CLEAN_FLAG != mDirtyFlags) { mValue[updateBufferIndex] = mBaseValue; - mDirtyFlags = ( mDirtyFlags >> 1 ); + mDirtyFlags = (mDirtyFlags >> 1); } } /** * @copydoc Dali::PropertyInput::GetQuaternion() */ - virtual const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const + const Quaternion& GetQuaternion(BufferIndex bufferIndex) const override { - return mValue[ bufferIndex ]; + return mValue[bufferIndex]; } /** @@ -1882,7 +1687,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - Quaternion& Get(size_t bufferIndex) + Quaternion& Get(BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -1890,7 +1695,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - const Quaternion& Get(size_t bufferIndex) const + const Quaternion& Get(BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -1900,7 +1705,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - Quaternion& operator[](size_t bufferIndex) + Quaternion& operator[](BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -1910,7 +1715,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const Quaternion& operator[](size_t bufferIndex) const + const Quaternion& operator[](BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -1922,8 +1727,11 @@ public: */ void Bake(BufferIndex bufferIndex, const Quaternion& value) { - mValue[bufferIndex] = value; - mBaseValue = value; + // It's ok to bake both buffers as render is performed in same thread as update. Reading from event side + // has never been atomically safe. + mValue[bufferIndex] = value; + mValue[1 - bufferIndex] = value; + mBaseValue = value; OnBake(); } @@ -1942,7 +1750,6 @@ public: } private: - // Undefined AnimatableProperty(const AnimatableProperty& property); @@ -1950,41 +1757,36 @@ private: AnimatableProperty& operator=(const AnimatableProperty& rhs); private: - - DoubleBuffered mValue; ///< The double-buffered property value - Quaternion mBaseValue; ///< Reset to this base value at the beginning of each frame - + DoubleBuffered mValue; ///< The double-buffered property value + Quaternion mBaseValue; ///< Reset to this base value at the beginning of each frame }; /** * A Matrix animatable property of a scene-graph object. */ -template <> +template<> class AnimatableProperty : public AnimatablePropertyBase { public: - /** * Create an animatable property. * @param [in] initialValue The initial value of the property. */ - AnimatableProperty( const Matrix& initialValue ) - : mValue( initialValue ), - mBaseValue( initialValue ) + AnimatableProperty(const Matrix& initialValue) + : mValue(initialValue), + mBaseValue(initialValue) { } /** * Virtual destructor. */ - virtual ~AnimatableProperty() - { - } + ~AnimatableProperty() override = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() */ - virtual Dali::Property::Type GetType() const + Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } @@ -1992,22 +1794,22 @@ public: /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::ResetToBaseValue() */ - virtual void ResetToBaseValue(BufferIndex updateBufferIndex) + void ResetToBaseValue(BufferIndex updateBufferIndex) override { - if (CLEAN_FLAG != mDirtyFlags) + if(CLEAN_FLAG != mDirtyFlags) { mValue[updateBufferIndex] = mBaseValue; - mDirtyFlags = ( mDirtyFlags >> 1 ); + mDirtyFlags = (mDirtyFlags >> 1); } } /** * @copydoc Dali::Internal::PropertyInputImpl::GetMatrix() */ - virtual const Matrix& GetMatrix( BufferIndex bufferIndex ) const + const Matrix& GetMatrix(BufferIndex bufferIndex) const override { - return mValue[ bufferIndex ]; + return mValue[bufferIndex]; } /** @@ -2022,7 +1824,6 @@ public: OnSet(); } - /** * Change the property value by a relative amount. * @param[in] bufferIndex The buffer to write. @@ -2040,7 +1841,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - Matrix& Get(size_t bufferIndex) + Matrix& Get(BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -2048,7 +1849,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - const Matrix& Get(size_t bufferIndex) const + const Matrix& Get(BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -2058,7 +1859,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - Matrix& operator[](size_t bufferIndex) + Matrix& operator[](BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -2068,7 +1869,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const Matrix& operator[](size_t bufferIndex) const + const Matrix& operator[](BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -2080,8 +1881,11 @@ public: */ void Bake(BufferIndex bufferIndex, const Matrix& value) { - mValue[bufferIndex] = value; - mBaseValue = mValue[bufferIndex]; + // It's ok to bake both buffers as render is performed in same thread as update. Reading from event side + // has never been atomically safe. + mValue[bufferIndex] = value; + mValue[1 - bufferIndex] = value; + mBaseValue = mValue[bufferIndex]; OnBake(); } @@ -2096,13 +1900,12 @@ public: Matrix temp; Matrix::Multiply(temp, mValue[bufferIndex], delta); mValue[bufferIndex] = temp; - mBaseValue = temp; + mBaseValue = temp; OnBake(); } private: - // Undefined AnimatableProperty(const AnimatableProperty& property); @@ -2110,41 +1913,36 @@ private: AnimatableProperty& operator=(const AnimatableProperty& rhs); private: - - DoubleBuffered mValue; ///< The double-buffered property value - Matrix mBaseValue; ///< Reset to this base value at the beginning of each frame - + DoubleBuffered mValue; ///< The double-buffered property value + Matrix mBaseValue; ///< Reset to this base value at the beginning of each frame }; /** * A Matrix3 animatable property of a scene-graph object. */ -template <> +template<> class AnimatableProperty : public AnimatablePropertyBase { public: - /** * Create an animatable property. * @param [in] initialValue The initial value of the property. */ - AnimatableProperty( const Matrix3& initialValue ) - : mValue( initialValue ), - mBaseValue( initialValue ) + AnimatableProperty(const Matrix3& initialValue) + : mValue(initialValue), + mBaseValue(initialValue) { } /** * Virtual destructor. */ - virtual ~AnimatableProperty() - { - } + ~AnimatableProperty() override = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() */ - virtual Dali::Property::Type GetType() const + Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } @@ -2152,22 +1950,22 @@ public: /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::ResetToBaseValue() */ - virtual void ResetToBaseValue(BufferIndex updateBufferIndex) + void ResetToBaseValue(BufferIndex updateBufferIndex) override { - if (CLEAN_FLAG != mDirtyFlags) + if(CLEAN_FLAG != mDirtyFlags) { mValue[updateBufferIndex] = mBaseValue; - mDirtyFlags = ( mDirtyFlags >> 1 ); + mDirtyFlags = (mDirtyFlags >> 1); } } /** * @copydoc Dali::Internal::PropertyInputImpl::GetMatrix3() */ - virtual const Matrix3& GetMatrix3( BufferIndex bufferIndex ) const + const Matrix3& GetMatrix3(BufferIndex bufferIndex) const override { - return mValue[ bufferIndex ]; + return mValue[bufferIndex]; } /** @@ -2198,7 +1996,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - Matrix3& Get(size_t bufferIndex) + Matrix3& Get(BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -2206,7 +2004,7 @@ public: /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - const Matrix3& Get(size_t bufferIndex) const + const Matrix3& Get(BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -2216,7 +2014,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - Matrix3& operator[](size_t bufferIndex) + Matrix3& operator[](BufferIndex bufferIndex) { return mValue[bufferIndex]; } @@ -2226,7 +2024,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const Matrix3& operator[](size_t bufferIndex) const + const Matrix3& operator[](BufferIndex bufferIndex) const { return mValue[bufferIndex]; } @@ -2238,8 +2036,11 @@ public: */ void Bake(BufferIndex bufferIndex, const Matrix3& value) { - mValue[bufferIndex] = value; - mBaseValue = mValue[bufferIndex]; + // It's ok to bake both buffers as render is performed in same thread as update. Reading from event side + // has never been atomically safe. + mValue[bufferIndex] = value; + mValue[1 - bufferIndex] = value; + mBaseValue = mValue[bufferIndex]; OnBake(); } @@ -2254,13 +2055,12 @@ public: Matrix3 temp; Matrix3::Multiply(temp, mValue[bufferIndex], delta); mValue[bufferIndex] = temp; - mBaseValue = temp; + mBaseValue = temp; OnBake(); } private: - // Undefined AnimatableProperty(const AnimatableProperty& property); @@ -2268,114 +2068,112 @@ private: AnimatableProperty& operator=(const AnimatableProperty& rhs); private: - - DoubleBuffered mValue; ///< The double-buffered property value - Matrix3 mBaseValue; ///< Reset to this base value at the beginning of each frame - + DoubleBuffered mValue; ///< The double-buffered property value + Matrix3 mBaseValue; ///< Reset to this base value at the beginning of each frame }; } // namespace SceneGraph // Messages for AnimatableProperty -template -void BakeMessage( EventThreadServices& eventThreadServices, - const SceneGraph::AnimatableProperty& property, - typename ParameterType< T >::PassingType newValue ) +template +void BakeMessage(EventThreadServices& eventThreadServices, + const SceneGraph::AnimatableProperty& property, + typename ParameterType::PassingType newValue) { - typedef MessageDoubleBuffered1< SceneGraph::AnimatableProperty, T > LocalType; + using LocalType = MessageDoubleBuffered1, T>; // Reserve some memory inside the message queue - unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); + uint32_t* slot = eventThreadServices.ReserveMessageSlot(sizeof(LocalType)); // Construct message in the message queue memory; note that delete should not be called on the return value - new (slot) LocalType( &property, - &SceneGraph::AnimatableProperty::Bake, - newValue ); + new(slot) LocalType(&property, + &SceneGraph::AnimatableProperty::Bake, + newValue); } -template -void BakeRelativeMessage( EventThreadServices& eventThreadServices, - const SceneGraph::AnimatableProperty& property, - const T& delta ) +template +void BakeRelativeMessage(EventThreadServices& eventThreadServices, + const SceneGraph::AnimatableProperty& property, + const T& delta) { - typedef MessageDoubleBuffered1< SceneGraph::AnimatableProperty, const T& > LocalType; + using LocalType = MessageDoubleBuffered1, const T&>; // Reserve some memory inside the message queue - unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); + uint32_t* slot = eventThreadServices.ReserveMessageSlot(sizeof(LocalType)); // Construct message in the message queue memory; note that delete should not be called on the return value - new (slot) LocalType( &property, - &SceneGraph::AnimatableProperty::BakeRelative, - delta ); + new(slot) LocalType(&property, + &SceneGraph::AnimatableProperty::BakeRelative, + delta); } -template -void SetXComponentMessage( EventThreadServices& eventThreadServices, - const SceneGraph::AnimatableProperty& property, - typename ParameterType< float >::PassingType newValue ) +template +void SetXComponentMessage(EventThreadServices& eventThreadServices, + const SceneGraph::AnimatableProperty& property, + typename ParameterType::PassingType newValue) { - typedef MessageDoubleBuffered1< SceneGraph::AnimatableProperty, float > LocalType; + using LocalType = MessageDoubleBuffered1, float>; // Reserve some memory inside the message queue - unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); + uint32_t* slot = eventThreadServices.ReserveMessageSlot(sizeof(LocalType)); // Construct message in the message queue memory; note that delete should not be called on the return value - new (slot) LocalType( &property, - &SceneGraph::AnimatableProperty::BakeX, - newValue ); + new(slot) LocalType(&property, + &SceneGraph::AnimatableProperty::BakeX, + newValue); } -template -void SetYComponentMessage( EventThreadServices& eventThreadServices, - const SceneGraph::AnimatableProperty& property, - typename ParameterType< float >::PassingType newValue ) +template +void SetYComponentMessage(EventThreadServices& eventThreadServices, + const SceneGraph::AnimatableProperty& property, + typename ParameterType::PassingType newValue) { - typedef MessageDoubleBuffered1< SceneGraph::AnimatableProperty, float > LocalType; + using LocalType = MessageDoubleBuffered1, float>; // Reserve some memory inside the message queue - unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); + uint32_t* slot = eventThreadServices.ReserveMessageSlot(sizeof(LocalType)); // Construct message in the message queue memory; note that delete should not be called on the return value - new (slot) LocalType( &property, - &SceneGraph::AnimatableProperty::BakeY, - newValue ); + new(slot) LocalType(&property, + &SceneGraph::AnimatableProperty::BakeY, + newValue); } -template -void SetZComponentMessage( EventThreadServices& eventThreadServices, - const SceneGraph::AnimatableProperty& property, - typename ParameterType< float >::PassingType newValue ) +template +void SetZComponentMessage(EventThreadServices& eventThreadServices, + const SceneGraph::AnimatableProperty& property, + typename ParameterType::PassingType newValue) { - typedef MessageDoubleBuffered1< SceneGraph::AnimatableProperty, float > LocalType; + using LocalType = MessageDoubleBuffered1, float>; // Reserve some memory inside the message queue - unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); + uint32_t* slot = eventThreadServices.ReserveMessageSlot(sizeof(LocalType)); // Construct message in the message queue memory; note that delete should not be called on the return value - new (slot) LocalType( &property, - &SceneGraph::AnimatableProperty::BakeZ, - newValue ); + new(slot) LocalType(&property, + &SceneGraph::AnimatableProperty::BakeZ, + newValue); } -template -void SetWComponentMessage( EventThreadServices& eventThreadServices, - const SceneGraph::AnimatableProperty& property, - typename ParameterType< float >::PassingType newValue ) +template +void SetWComponentMessage(EventThreadServices& eventThreadServices, + const SceneGraph::AnimatableProperty& property, + typename ParameterType::PassingType newValue) { - typedef MessageDoubleBuffered1< SceneGraph::AnimatableProperty, float > LocalType; + using LocalType = MessageDoubleBuffered1, float>; // Reserve some memory inside the message queue - unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); + uint32_t* slot = eventThreadServices.ReserveMessageSlot(sizeof(LocalType)); // Construct message in the message queue memory; note that delete should not be called on the return value - new (slot) LocalType( &property, - &SceneGraph::AnimatableProperty::BakeW, - newValue ); + new(slot) LocalType(&property, + &SceneGraph::AnimatableProperty::BakeW, + newValue); } } // namespace Internal } // namespace Dali -#endif // __DALI_INTERNAL_SCENE_GRAPH_ANIMATABLE_PROPERTY_H__ +#endif // DALI_INTERNAL_SCENE_GRAPH_ANIMATABLE_PROPERTY_H