Load image data in a different thread
This commit is contained in:
parent
d633e549bc
commit
1175424c23
6 changed files with 93 additions and 40 deletions
|
|
@ -2,6 +2,8 @@
|
|||
#include "ResourceDisplay.hpp"
|
||||
#include <include/core/SkImage.h>
|
||||
#include <vector>
|
||||
#include <thread>
|
||||
#include <include/codec/SkCodec.h>
|
||||
|
||||
class ImageResourceDisplay : public ResourceDisplay {
|
||||
public:
|
||||
|
|
@ -12,13 +14,27 @@ class ImageResourceDisplay : public ResourceDisplay {
|
|||
virtual Vector2f get_dimensions() const override;
|
||||
virtual float get_dimension_scale() const override;
|
||||
virtual Type get_type() const override;
|
||||
virtual ~ImageResourceDisplay() override;
|
||||
private:
|
||||
struct FrameData {
|
||||
sk_sp<SkImage> data;
|
||||
float duration;
|
||||
};
|
||||
std::vector<FrameData> frames;
|
||||
|
||||
SkImageInfo imageInfo;
|
||||
|
||||
void load_thread();
|
||||
|
||||
int totalFramesToLoad;
|
||||
std::atomic<int> loadedFrames = 0;
|
||||
sk_sp<SkData> imageRawData;
|
||||
std::unique_ptr<SkCodec> codec;
|
||||
std::atomic<bool> shutdownLoadThread = false;
|
||||
std::unique_ptr<std::thread> loadThread;
|
||||
|
||||
float currentTime = 0.0f;
|
||||
size_t frameIndex = 0;
|
||||
int frameIndex = 0;
|
||||
bool mustUpdateDraw = false;
|
||||
bool loadedFirstFrame = false;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue