X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Ftexture-manager-impl.cpp;h=5e0b506cfe83bd99f6ad8b2742b20ad1828549a6;hb=a4fa71ebecb9ed103fa3e64004e99b728f9190c2;hp=64bbb5be5c2d5a28c7f2eefa6a93d6b9730d8e96;hpb=4593cc619ab0739fc8586c0c752209c555b0c8e3;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/texture-manager-impl.cpp b/dali-toolkit/internal/visuals/texture-manager-impl.cpp index 64bbb5b..5e0b506 100644 --- a/dali-toolkit/internal/visuals/texture-manager-impl.cpp +++ b/dali-toolkit/internal/visuals/texture-manager-impl.cpp @@ -819,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 ) @@ -853,6 +855,11 @@ void TextureManager::ProcessQueuedTextures() { for( auto&& element : mLoadQueue ) { + if( !element.mObserver ) + { + continue; + } + int cacheIndex = GetCacheIndexFromId( element.mTextureId ); if( cacheIndex != INVALID_CACHE_INDEX ) { @@ -1312,6 +1319,15 @@ void TextureManager::ObserverDestroyed( TextureUploadObserver* observer ) } } } + + // Remove element from the LoadQueue + for( auto&& element : mLoadQueue ) + { + if( element.mObserver == observer ) + { + element.mObserver = nullptr; + } + } }