X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Ftexture-manager-impl.cpp;h=5e0b506cfe83bd99f6ad8b2742b20ad1828549a6;hp=e23290b66db2ea55659b86d0cec9301684acc32c;hb=097d3a70079f836c1cc5022673b77aaf013f83bc;hpb=d51cf112336be005eec7a543b5665bfb7480918c diff --git a/dali-toolkit/internal/visuals/texture-manager-impl.cpp b/dali-toolkit/internal/visuals/texture-manager-impl.cpp index e23290b..5e0b506 100644 --- a/dali-toolkit/internal/visuals/texture-manager-impl.cpp +++ b/dali-toolkit/internal/visuals/texture-manager-impl.cpp @@ -27,11 +27,13 @@ #include #include #include +#include // INTERNAL HEADERS #include #include #include +#include namespace { @@ -133,6 +135,8 @@ TextureManager::TextureManager() mCurrentTextureId( 0 ), mQueueLoadFlag(false) { + // Initialize the AddOn + RenderingAddOn::Get(); } TextureManager::~TextureManager() @@ -815,6 +819,8 @@ void TextureManager::QueueLoadTexture( TextureInfo& textureInfo, TextureUploadOb { auto textureId = textureInfo.textureId; mLoadQueue.PushBack( LoadQueueElement( textureId, observer) ); + + observer->DestructionSignal().Connect( this, &TextureManager::ObserverDestroyed ); } void TextureManager::LoadTexture( TextureInfo& textureInfo, TextureUploadObserver* observer ) @@ -849,6 +855,11 @@ void TextureManager::ProcessQueuedTextures() { for( auto&& element : mLoadQueue ) { + if( !element.mObserver ) + { + continue; + } + int cacheIndex = GetCacheIndexFromId( element.mTextureId ); if( cacheIndex != INVALID_CACHE_INDEX ) { @@ -1048,6 +1059,12 @@ void TextureManager::UploadTexture( Devel::PixelBuffer& pixelBuffer, TextureInfo // Check if this pixelBuffer is premultiplied textureInfo.preMultiplied = pixelBuffer.IsAlphaPreMultiplied(); + auto& renderingAddOn = RenderingAddOn::Get(); + if( renderingAddOn.IsValid() ) + { + renderingAddOn.CreateGeometry( textureInfo.textureId, pixelBuffer ); + } + Texture texture = Texture::New( Dali::TextureType::TEXTURE_2D, pixelBuffer.GetPixelFormat(), pixelBuffer.GetWidth(), pixelBuffer.GetHeight() ); @@ -1302,6 +1319,15 @@ void TextureManager::ObserverDestroyed( TextureUploadObserver* observer ) } } } + + // Remove element from the LoadQueue + for( auto&& element : mLoadQueue ) + { + if( element.mObserver == observer ) + { + element.mObserver = nullptr; + } + } } @@ -1373,6 +1399,13 @@ void TextureManager::SetBrokenImageUrl(const std::string& brokenImageUrl) mBrokenImageUrl = brokenImageUrl; } +Geometry TextureManager::GetRenderGeometry(TextureId textureId, uint32_t& frontElements, uint32_t& backElements ) +{ + return RenderingAddOn::Get().IsValid() ? + RenderingAddOn::Get().GetGeometry( textureId, frontElements, backElements) : + Geometry(); +} + } // namespace Internal } // namespace Toolkit