X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fnodes%2Fnode.cpp;h=87b4603d8f1892cb6d6f28aef099def7ba7bb4d4;hb=3c49a16475d96201db74ebb9a7c8c872857ca6b5;hp=5ae5e1c89c2b13713911ad97e7d6ae85ee0bfd6d;hpb=244c80a941817eda0931a1567dfeea85da6154a8;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/nodes/node.cpp b/dali/internal/update/nodes/node.cpp index 5ae5e1c..87b4603 100644 --- a/dali/internal/update/nodes/node.cpp +++ b/dali/internal/update/nodes/node.cpp @@ -27,8 +27,8 @@ namespace { -//Memory pool used to allocate new nodes. Memory used by this pool will be released when process dies -// or DALI library is unloaded +// Memory pool used to allocate new nodes. Memory used by this pool will be released when process dies +// or DALI library is unloaded Dali::Internal::MemoryPoolObjectAllocator gNodeMemoryPool; #ifdef DEBUG_ENABLED // keep track of nodes alive, to ensure we have 0 when the process exits or DALi library is unloaded @@ -59,8 +59,8 @@ Node* Node::New() void Node::Delete(Node* node) { - // check we have a node not a layer - if(!node->mIsLayer) + // check we have a node not a derived node + if(!node->mIsLayer && !node->mIsCamera) { // Manually call the destructor node->~Node(); @@ -76,16 +76,16 @@ void Node::Delete(Node* node) } Node::Node() -: mOrientation(), // Initialized to identity by default - mVisible(true), - mCulled(false), - mColor(Color::WHITE), - mUpdateSizeHint(Vector3::ZERO), +: mOrientation(), // Initialized to identity by default mWorldPosition(TRANSFORM_PROPERTY_WORLD_POSITION, Vector3(0.0f, 0.0f, 0.0f)), // Zero initialized by default mWorldScale(TRANSFORM_PROPERTY_WORLD_SCALE, Vector3(1.0f, 1.0f, 1.0f)), mWorldOrientation(), // Initialized to identity by default mWorldMatrix(), + mVisible(true), + mCulled(false), + mColor(Color::WHITE), mWorldColor(Color::WHITE), + mUpdateAreaHint(Vector4::ZERO), mClippingSortModifier(0u), mId(++mNodeCounter), mParent(nullptr), @@ -100,6 +100,7 @@ Node::Node() mClippingMode(ClippingMode::DISABLED), mIsRoot(false), mIsLayer(false), + mIsCamera(false), mPositionUsesAnchorPoint(true), mTransparent(false) { @@ -133,28 +134,14 @@ uint32_t Node::GetId() const void Node::CreateTransform(SceneGraph::TransformManager* transformManager) { - //Create a new transform + // Create a new transform mTransformManagerData.mManager = transformManager; TransformId createdTransformId = transformManager->CreateTransform(); - //Initialize all the animatable properties - mPosition.Initialize(&mTransformManagerData); - mScale.Initialize(&mTransformManagerData); - mOrientation.Initialize(&mTransformManagerData); - mSize.Initialize(&mTransformManagerData); - mParentOrigin.Initialize(&mTransformManagerData); - mAnchorPoint.Initialize(&mTransformManagerData); - - //Initialize all the input properties - mWorldPosition.Initialize(&mTransformManagerData); - mWorldScale.Initialize(&mTransformManagerData); - mWorldOrientation.Initialize(&mTransformManagerData); - mWorldMatrix.Initialize(&mTransformManagerData); - - //Set whether the position should use the anchor point + // Set whether the position should use the anchor point transformManager->SetPositionUsesAnchorPoint(createdTransformId, mPositionUsesAnchorPoint); - //Set TransformId after initialize done. + // Set TransformId after initialize done. mTransformManagerData.mId = createdTransformId; } @@ -269,6 +256,12 @@ NodePropertyFlags Node::GetDirtyFlags() const flags |= NodePropertyFlags::COLOR; } + // Check whether the update area property has changed + if(!mUpdateAreaHint.IsClean()) + { + flags |= NodePropertyFlags::TRANSFORM; + } + return flags; } @@ -287,6 +280,20 @@ void Node::ResetDirtyFlags(BufferIndex updateBufferIndex) mDirtyFlags = NodePropertyFlags::NOTHING; } +void Node::UpdateUniformHash(BufferIndex bufferIndex) +{ + uint64_t hash = 0xc70f6907UL; + for(uint32_t i = 0u, count = mUniformMaps.Count(); i < count; ++i) + { + hash = mUniformMaps[i].propertyPtr->Hash(bufferIndex, hash); + } + if(mUniformsHash != hash) + { + mUniformsHash = hash; + SetUpdated(true); + } +} + void Node::SetParent(Node& parentNode) { DALI_ASSERT_ALWAYS(this != &parentNode); @@ -327,6 +334,11 @@ void Node::RecursiveDisconnectFromSceneGraph(BufferIndex updateBufferIndex) } } +uint32_t Node::GetMemoryPoolCapacity() +{ + return gNodeMemoryPool.GetCapacity(); +} + } // namespace SceneGraph } // namespace Internal