X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fanimated-image%2Ffixed-image-cache.cpp;h=e64a51b22d92ec6847c6863922e88e8e96b62bd3;hp=d60834f58b83dd187ad25d1db37f94dd326b4dcc;hb=c02f801e5fd89a14e2f49f36ff1513248eead35d;hpb=46322a558e537267a6d3c48630c45afca91b5e27 diff --git a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp index d60834f..e64a51b 100644 --- a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp +++ b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp @@ -17,6 +17,9 @@ // CLASS HEADER #include +// INTERNAL HEADERS +#include // For ImageAtlasManagerPtr + namespace Dali { namespace Toolkit @@ -24,10 +27,16 @@ namespace Toolkit namespace Internal { +namespace +{ +const bool ENABLE_ORIENTATION_CORRECTION( true ); +} // namespace + FixedImageCache::FixedImageCache( TextureManager& textureManager, UrlList& urlList, ImageCache::FrameReadyObserver& observer, unsigned int batchSize ) -: ImageCache( textureManager, urlList, observer, batchSize ), +: ImageCache( textureManager, observer, batchSize ), + mImageUrls( urlList ), mFront(0u) { mReadyFlags.reserve( mImageUrls.size() ); @@ -36,9 +45,12 @@ FixedImageCache::FixedImageCache( FixedImageCache::~FixedImageCache() { - for( std::size_t i = 0; i < mImageUrls.size() ; ++i ) + if( mTextureManagerAlive ) { - mTextureManager.Remove( mImageUrls[i].mTextureId ); + for( std::size_t i = 0; i < mImageUrls.size() ; ++i ) + { + mTextureManager.Remove( mImageUrls[i].mTextureId, this ); + } } } @@ -97,10 +109,29 @@ void FixedImageCache::LoadBatch() // need to account for this inside the UploadComplete method using mRequestingLoad. mRequestingLoad = true; - mImageUrls[ mUrlIndex ].mTextureId = - mTextureManager.RequestLoad( url, ImageDimensions(), FittingMode::SCALE_TO_FILL, - SamplingMode::BOX_THEN_LINEAR, TextureManager::NO_ATLAS, - this ); + bool synchronousLoading = false; + bool atlasingStatus = false; + bool loadingStatus = false; + TextureManager::MaskingDataPointer maskInfo = nullptr; + AtlasUploadObserver* atlasObserver = nullptr; + ImageAtlasManagerPtr imageAtlasManager = nullptr; + Vector4 textureRect; + Dali::ImageDimensions textureRectSize; + auto preMultiply = TextureManager::MultiplyOnLoad::LOAD_WITHOUT_MULTIPLY; + + mTextureManager.LoadTexture( + url, ImageDimensions(), FittingMode::SCALE_TO_FILL, + SamplingMode::BOX_THEN_LINEAR, maskInfo, + synchronousLoading, mImageUrls[ mUrlIndex ].mTextureId, textureRect, textureRectSize, + atlasingStatus, loadingStatus, Dali::WrapMode::Type::DEFAULT, + Dali::WrapMode::Type::DEFAULT, this, + atlasObserver, imageAtlasManager, ENABLE_ORIENTATION_CORRECTION, TextureManager::ReloadPolicy::CACHED, + preMultiply ); + + if( loadingStatus == false ) // not loading, means it's already ready. + { + SetImageFrameReady( mImageUrls[ mUrlIndex ].mTextureId ); + } mRequestingLoad = false; ++mUrlIndex; } @@ -139,7 +170,8 @@ void FixedImageCache::UploadComplete( int32_t textureId, TextureSet textureSet, bool useAtlasing, - const Vector4& atlasRect ) + const Vector4& atlasRect, + bool preMultiplied) { bool frontFrameReady = IsFrontReady();