/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
#include <dali-toolkit/internal/visuals/image-atlas-manager.h> // For ImageAtlasManagerPtr
// EXTERNAL HEADERS
+#include <dali/integration-api/adaptor-framework/adaptor.h>
#include <dali/integration-api/debug.h>
namespace Dali
bool preMultiplyOnLoad)
: ImageCache(textureManager, size, fittingMode, samplingMode, maskingData, observer, batchSize, interval, preMultiplyOnLoad),
mImageUrls(urlList),
- mFront(FIRST_FRAME_INDEX)
+ mCurrentFrameIndex(FIRST_FRAME_INDEX)
{
mReadyFlags.reserve(mImageUrls.size());
}
}
while(mReadyFlags.size() < mImageUrls.size() &&
- (frameIndex > mFront || mReadyFlags.empty()))
+ (frameIndex > mCurrentFrameIndex || mReadyFlags.empty()))
{
- ++mFront;
+ ++mCurrentFrameIndex;
LoadBatch();
}
- mFront = frameIndex;
+ mCurrentFrameIndex = frameIndex;
- if(IsFrontReady() && mLoadState != TextureManager::LoadState::LOAD_FAILED)
+ if(IsFrameReady(mCurrentFrameIndex) && mLoadState != TextureManager::LoadState::LOAD_FAILED)
{
- textureSet = GetFrontTextureSet();
+ textureSet = GetTextureSet(mCurrentFrameIndex);
}
return textureSet;
int32_t FixedImageCache::GetCurrentFrameIndex() const
{
- return static_cast<int32_t>(mFront);
+ return static_cast<int32_t>(mCurrentFrameIndex);
}
int32_t FixedImageCache::GetTotalFrameCount() const
return mImageUrls.size();
}
-bool FixedImageCache::IsFrontReady() const
+bool FixedImageCache::IsFrameReady(uint32_t frameIndex) const
{
- return (mReadyFlags.size() > 0 && mReadyFlags[mFront] == true);
+ return (mReadyFlags.size() > 0 && mReadyFlags[frameIndex] == true);
}
void FixedImageCache::LoadBatch()
}
}
-TextureSet FixedImageCache::GetFrontTextureSet() const
+TextureSet FixedImageCache::GetTextureSet(uint32_t frameIndex) const
{
- TextureSet textureSet = mTextureManager.GetTextureSet(mImageUrls[mFront].mTextureId);
- if(textureSet)
- {
- Sampler sampler = Sampler::New();
- sampler.SetWrapMode(Dali::WrapMode::Type::DEFAULT, Dali::WrapMode::Type::DEFAULT);
- textureSet.SetSampler(0u, sampler);
- }
+ TextureSet textureSet = mTextureManager.GetTextureSet(mImageUrls[frameIndex].mTextureId);
return textureSet;
}
-void FixedImageCache::CheckFrontFrame(bool wasReady, bool preMultiplied)
+void FixedImageCache::MakeReady(bool wasReady, uint32_t frameIndex, bool preMultiplied)
{
- if(wasReady == false && IsFrontReady())
+ if(wasReady == false && IsFrameReady(frameIndex))
{
- mObserver.FrameReady(GetFrontTextureSet(), mInterval, preMultiplied);
+ mObserver.FrameReady(GetTextureSet(frameIndex), mInterval, preMultiplied);
}
}
void FixedImageCache::ClearCache()
{
- if(mTextureManagerAlive)
+ if(Dali::Adaptor::IsAvailable())
{
for(std::size_t i = 0; i < mImageUrls.size(); ++i)
{
- mTextureManager.Remove(mImageUrls[i].mTextureId, this);
+ mTextureManager.RequestRemove(mImageUrls[i].mTextureId, this);
mImageUrls[i].mTextureId = TextureManager::INVALID_TEXTURE_ID;
}
}
{
if(loadSuccess)
{
- mLoadState = TextureManager::LoadState::LOAD_FINISHED;
- bool frontFrameReady = IsFrontReady();
+ mLoadState = TextureManager::LoadState::LOAD_FINISHED;
+ bool isCurrentFrameReady = IsFrameReady(mCurrentFrameIndex);
if(!mRequestingLoad)
{
for(std::size_t i = 0; i < mImageUrls.size(); ++i)
{
mReadyFlags.back() = true;
}
- CheckFrontFrame(frontFrameReady, textureInformation.preMultiplied);
+ MakeReady(isCurrentFrameReady, mCurrentFrameIndex, textureInformation.preMultiplied);
}
else
{