#define DALI_TOOLKIT_INTERNAL_IMAGE_CACHE_H
/*
- * 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.
namespace Internal
{
-class ImageCache : public TextureUploadObserver
+class ImageCache : public TextureManager::LifecycleObserver
{
public:
/**
struct UrlStore
{
- TextureManager::TextureId mTextureId;
+ TextureManager::TextureId mTextureId = TextureManager::INVALID_TEXTURE_ID;
std::string mUrl;
};
* batch and cache sizes. The cache is as large as the number of urls.
*/
ImageCache( TextureManager& textureManager,
- UrlList& urlList,
ImageCache::FrameReadyObserver& observer,
unsigned int batchSize );
virtual TextureSet FirstFrame() = 0;
/**
- * Get the next frame. If it's not ready, this will trigger the
+ * Get the Nth frame. If it's not ready, this will trigger the
* sending of FrameReady() when the image becomes ready.
- * This will trigger the loading of the next batch.
*/
- virtual TextureSet NextFrame() = 0;
+ virtual TextureSet Frame( uint32_t frameIndex ) = 0;
+
+ /**
+ * Get the interval of Nth frame.
+ */
+ virtual uint32_t GetFrameInterval( uint32_t frameIndex ) = 0;
+
+private:
+
+ /**
+ * Called before the texture manager is destroyed.
+ */
+ void TextureManagerDestroyed() final;
protected:
TextureManager& mTextureManager;
FrameReadyObserver& mObserver;
- std::vector<UrlStore>& mImageUrls;
unsigned int mBatchSize;
unsigned int mUrlIndex;
bool mWaitingForReadyFrame:1;
bool mRequestingLoad:1;
+ bool mTextureManagerAlive:1;
};
} //namespace Internal