X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fanimated-image%2Ffixed-image-cache.cpp;h=d71ee9469debb1487aaad2190373073076955c7a;hb=b31764bc76595c1ccd58cf4366dcde2cc78e72cf;hp=b1713d21453be5bd58ad532228625eb8e11a5d8d;hpb=235a3efd5d00a20adbcae39dfce2c29a6c0344b7;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git 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 b1713d2..d71ee94 100644 --- a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp +++ b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,12 +45,36 @@ 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 ); + } } } +TextureSet FixedImageCache::Frame( uint32_t frameIndex ) +{ + while( frameIndex > mFront ) + { + NextFrame(); + } + mFront = frameIndex; + + TextureSet textureSet; + if( IsFrontReady() == true ) + { + textureSet = GetFrontTextureSet(); + } + else + { + mWaitingForReadyFrame = true; + } + + return textureSet; +} + TextureSet FixedImageCache::FirstFrame() { TextureSet textureSet = GetFrontTextureSet(); @@ -77,7 +101,6 @@ TextureSet FixedImageCache::NextFrame() { mWaitingForReadyFrame = true; } - LoadBatch(); return textureSet; @@ -93,7 +116,7 @@ void FixedImageCache::LoadBatch() // Try and load up to mBatchSize images, until the cache is filled. // Once the cache is filled, mUrlIndex exceeds mImageUrls size and // no more images are loaded. - bool frontFrameReady = IsFrontReady();; + bool frontFrameReady = IsFrontReady(); for( unsigned int i=0; i< mBatchSize && mUrlIndex < mImageUrls.size(); ++i ) { @@ -113,12 +136,13 @@ void FixedImageCache::LoadBatch() 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, + 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, @@ -186,6 +210,17 @@ void FixedImageCache::UploadComplete( } } +void FixedImageCache::LoadComplete( + bool loadSuccess, + Devel::PixelBuffer pixelBuffer, + const VisualUrl& url, + bool preMultiplied ) +{ + // LoadComplete is called if this TextureUploadObserver requested to load + // an image that will be returned as a type of PixelBuffer by using a method + // TextureManager::LoadPixelBuffer. +} + } //namespace Internal } //namespace Toolkit -} //namespace Dali +} //namespace Dali \ No newline at end of file