X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftexture-manager%2Ftexture-cache-manager.cpp;h=cc90fd8b37b11c17630f0fb6edea2a2d96eec328;hb=1bc53ac578137a8f0f0ecedb30a6d76dc9d743c2;hp=bdc0b6a6d032f0aa865b7720336f844060ed315c;hpb=18550c831b92074461a7990541e75e9225894062;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/texture-manager/texture-cache-manager.cpp b/dali-toolkit/internal/texture-manager/texture-cache-manager.cpp index bdc0b6a..cc90fd8 100644 --- a/dali-toolkit/internal/texture-manager/texture-cache-manager.cpp +++ b/dali-toolkit/internal/texture-manager/texture-cache-manager.cpp @@ -326,7 +326,8 @@ TextureCacheManager::TextureHash TextureCacheManager::GenerateHash( const Dali::FittingMode::Type& fittingMode, const Dali::SamplingMode::Type& samplingMode, const TextureCacheManager::UseAtlas& useAtlas, - const TextureCacheManager::TextureId& maskTextureId) + const TextureCacheManager::TextureId& maskTextureId, + const bool& cropToMask) { std::vector hashTarget(url.begin(), url.end()); const size_t urlLength = url.length(); @@ -374,7 +375,7 @@ TextureCacheManager::TextureHash TextureCacheManager::GenerateHash( if(maskTextureId != INVALID_TEXTURE_ID) { auto textureIdIndex = hashTarget.size(); - hashTarget.resize(hashTarget.size() + sizeof(TextureId)); + hashTarget.resize(hashTarget.size() + sizeof(TextureId) + 1u); std::uint8_t* hashTargetPtr = reinterpret_cast(&(hashTarget[textureIdIndex])); // Append the texture id to the end of the URL byte by byte: @@ -385,6 +386,7 @@ TextureCacheManager::TextureHash TextureCacheManager::GenerateHash( *hashTargetPtr++ = saltedMaskTextureId & 0xff; saltedMaskTextureId >>= 8u; } + *hashTargetPtr++ = (cropToMask ? 'C' : 'M'); } return Dali::CalculateHash(hashTarget); @@ -398,7 +400,9 @@ TextureCacheManager::TextureCacheIndex TextureCacheManager::FindCachedTexture( const Dali::SamplingMode::Type& samplingMode, const TextureCacheManager::UseAtlas& useAtlas, const TextureCacheManager::TextureId& maskTextureId, - const TextureCacheManager::MultiplyOnLoad& preMultiplyOnLoad) + const TextureCacheManager::MultiplyOnLoad& preMultiplyOnLoad, + bool isAnimatedImage, + const bool& cropToMask) { // Default to an invalid ID, in case we do not find a match. TextureCacheIndex cacheIndex = INVALID_CACHE_INDEX; @@ -415,7 +419,9 @@ TextureCacheManager::TextureCacheIndex TextureCacheManager::FindCachedTexture( if((url == textureInfo.url.GetUrl()) && (useAtlas == textureInfo.useAtlas) && (maskTextureId == textureInfo.maskTextureId) && + (cropToMask == textureInfo.cropToMask) && (size == textureInfo.desiredSize) && + (isAnimatedImage == textureInfo.isAnimatedImageFormat) && ((size.GetWidth() == 0 && size.GetHeight() == 0) || (fittingMode == textureInfo.fittingMode && samplingMode == textureInfo.samplingMode))) @@ -449,7 +455,6 @@ void TextureCacheManager::RemoveCache(const TextureCacheManager::TextureId& text if(textureInfoIndex != INVALID_CACHE_INDEX) { TextureInfo& textureInfo(mTextureInfoContainer[textureInfoIndex]); - DALI_LOG_INFO(gTextureManagerLogFilter, Debug::Concise, "TextureCacheManager::Remove(textureId:%d) url:%s\n cacheIdx:%d loadState:%s reference count = %d\n", textureId, textureInfo.url.GetUrl().c_str(), textureInfoIndex, GET_LOAD_STATE_STRING(textureInfo.loadState), textureInfo.referenceCount); // Decrement the reference count and check if this is the last user of this Texture.