From: sunghyun kim Date: Thu, 8 Sep 2022 04:45:58 +0000 (+0000) Subject: Merge "Remove mask internally in texture manager" into devel/master X-Git-Tag: dali_2.1.39~1 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=2bba756a645043d8c1c4023a75966401d531827c Merge "Remove mask internally in texture manager" into devel/master --- 2bba756a645043d8c1c4023a75966401d531827c diff --cc dali-toolkit/internal/texture-manager/texture-manager-impl.cpp index 2bb79a2,3156f9e..0c89aad --- a/dali-toolkit/internal/texture-manager/texture-manager-impl.cpp +++ b/dali-toolkit/internal/texture-manager/texture-manager-impl.cpp @@@ -1308,47 -1367,26 +1360,63 @@@ TextureSet TextureManager::GetTextureSe } else { - observer->LoadComplete(success, TextureUploadObserver::TextureInformation(TextureUploadObserver::ReturnType::TEXTURE, textureInfo.textureId, textureInfo.textureSet, (textureInfo.useAtlas == UseAtlas::USE_ATLAS) ? true : false, textureInfo.atlasRect, textureInfo.preMultiplied)); + DALI_LOG_ERROR("GetTextureSet is failed. texture is not uploaded \n"); + } + return textureSet; +} + +TextureSet TextureManager::GetTextureSet(const TextureManager::TextureInfo& textureInfo) +{ + TextureSet textureSet; + + // LoadComplete has already been called - keep the same texture set + textureSet = TextureSet::New(); + if(!textureInfo.textures.empty()) + { + if(textureInfo.textures.size() > 1) // For YUV case + { + uint32_t index = 0u; + for(auto&& texture : textureInfo.textures) + { + textureSet.SetTexture(index++, texture); + } + } + else + { + textureSet.SetTexture(TEXTURE_INDEX, textureInfo.textures[0]); + TextureCacheIndex maskCacheIndex = mTextureCacheManager.GetCacheIndexFromId(textureInfo.maskTextureId); + if(maskCacheIndex != INVALID_CACHE_INDEX) + { + TextureInfo& maskTextureInfo(mTextureCacheManager[maskCacheIndex]); + if(maskTextureInfo.storageType == StorageType::UPLOAD_TO_TEXTURE || maskTextureInfo.storageType == StorageType::KEEP_TEXTURE) + { + if(!maskTextureInfo.textures.empty()) + { + textureSet.SetTexture(MASK_TEXTURE_INDEX, maskTextureInfo.textures[0]); + } + } + } + } } + return textureSet; } + void TextureManager::RemoveTextureObserver(TextureManager::TextureInfo& textureInfo, TextureUploadObserver* observer) + { + // Remove its observer + if(observer) + { + const auto iterEnd = textureInfo.observerList.End(); + const auto iter = std::find(textureInfo.observerList.Begin(), iterEnd, observer); + if(iter != iterEnd) + { + // Disconnect and remove the observer. + observer->DestructionSignal().Disconnect(this, &TextureManager::ObserverDestroyed); + textureInfo.observerList.Erase(iter); + } + } + } + } // namespace Internal } // namespace Toolkit