1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:57:35 +00:00

LibWeb+Browser: Decode non-animated images out-of-process :^)

We now use the ImageDecoder service in LibWeb for everything except
GIF images (we'll have to deal with them later, ofc.)

This has a little bit of overhead but we should be able to optimize
it until it becomes negligible.
This commit is contained in:
Andreas Kling 2020-06-22 21:41:10 +02:00
parent b273b31c7d
commit 10255bc5c6
10 changed files with 96 additions and 25 deletions

View file

@ -36,12 +36,17 @@ class ImageResource final : public Resource {
public:
virtual ~ImageResource() override;
Gfx::ImageDecoder& ensure_decoder();
const Gfx::Bitmap* bitmap(size_t frame_index) const;
bool should_decode_in_process() const;
void update_volatility();
private:
explicit ImageResource(const LoadRequest&);
RefPtr<Gfx::ImageDecoder> m_decoder;
mutable RefPtr<Gfx::Bitmap> m_decoded_image;
mutable bool m_has_attempted_decode { false };
};
class ImageResourceClient : public ResourceClient {