X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Frender%2Fcommon%2Frender-item.cpp;h=0ba37c30fcff90f5f2c62aa9034f1fb1802a1dc4;hb=73a52536910edf1cbb6ec462217e09a9cbd0449d;hp=1aafa3715e21bfc07d4f02eb4a2ef882b25a92e9;hpb=3c49a16475d96201db74ebb9a7c8c872857ca6b5;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/render/common/render-item.cpp b/dali/internal/render/common/render-item.cpp index 1aafa37..0ba37c3 100644 --- a/dali/internal/render/common/render-item.cpp +++ b/dali/internal/render/common/render-item.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -26,8 +26,13 @@ namespace { //Memory pool used to allocate new RenderItems. Memory used by this pool will be released when shutting down DALi -Dali::Internal::MemoryPoolObjectAllocator gRenderItemPool; +Dali::Internal::MemoryPoolObjectAllocator& GetRenderItemPool() +{ + static Dali::Internal::MemoryPoolObjectAllocator gRenderItemPool; + return gRenderItemPool; +} } // namespace + namespace Dali { namespace Internal @@ -36,14 +41,22 @@ namespace SceneGraph { RenderItem* RenderItem::New() { - return new(gRenderItemPool.AllocateRaw()) RenderItem(); + return new(GetRenderItemPool().AllocateRaw()) RenderItem(); +} + +RenderItemKey RenderItem::NewKey() +{ + void* ptr = GetRenderItemPool().AllocateRaw(); + auto key = GetRenderItemPool().GetKeyFromPtr(static_cast(ptr)); + new(ptr) RenderItem(); + return RenderItemKey(key); } RenderItem::RenderItem() : mModelMatrix(false), mModelViewMatrix(false), mSize(), - mRenderer(nullptr), + mRenderer{}, mNode(nullptr), mTextureSet(nullptr), mDepthIndex(0), @@ -54,6 +67,21 @@ RenderItem::RenderItem() RenderItem::~RenderItem() = default; +RenderItem* RenderItem::Get(RenderItemKey::KeyType key) +{ + return GetRenderItemPool().GetPtrFromKey(key); +} + +RenderItemKey RenderItem::GetKey(const RenderItem& renderItem) +{ + return RenderItemKey(GetRenderItemPool().GetKeyFromPtr(const_cast(&renderItem))); +} + +RenderItemKey RenderItem::GetKey(RenderItem* renderItem) +{ + return RenderItemKey(GetRenderItemPool().GetKeyFromPtr(renderItem)); +} + ClippingBox RenderItem::CalculateTransformSpaceAABB(const Matrix& transformMatrix, const Vector3& position, const Vector3& size) { // Calculate extent vector of the AABB: @@ -164,12 +192,12 @@ ClippingBox RenderItem::CalculateViewportSpaceAABB(const Matrix& modelViewMatrix void RenderItem::operator delete(void* ptr) { - gRenderItemPool.Free(static_cast(ptr)); + GetRenderItemPool().Free(static_cast(ptr)); } uint32_t RenderItem::GetMemoryPoolCapacity() { - return gRenderItemPool.GetCapacity(); + return GetRenderItemPool().GetCapacity(); } } // namespace SceneGraph