1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:17:35 +00:00

LibWeb: Make HTML::SharedImageRequest GC allocated

This allows to partially solve the problem of cyclic dependency between
HTMLImageElement and SharedImageRequest that prevents all image
elements from being deallocated.
This commit is contained in:
Aliaksandr Kalenik 2023-08-18 14:11:55 +02:00 committed by Andreas Kling
parent bbfedf2e5a
commit 934afcb9d5
9 changed files with 46 additions and 18 deletions

View file

@ -31,7 +31,7 @@ void ImageStyleValue::load_any_resources(DOM::Document& document)
return;
m_document = &document;
m_image_request = HTML::SharedImageRequest::get_or_create(*document.page(), m_url).release_value_but_fixme_should_propagate_errors();
m_image_request = HTML::SharedImageRequest::get_or_create(document.realm(), *document.page(), m_url);
m_image_request->add_callbacks(
[this, weak_this = make_weak_ptr()] {
if (!weak_this)

View file

@ -10,6 +10,7 @@
#pragma once
#include <AK/URL.h>
#include <LibJS/Heap/Handle.h>
#include <LibWeb/CSS/Enums.h>
#include <LibWeb/CSS/StyleValues/AbstractImageStyleValue.h>
@ -43,7 +44,7 @@ public:
private:
ImageStyleValue(AK::URL const&);
RefPtr<HTML::SharedImageRequest> m_image_request;
JS::Handle<HTML::SharedImageRequest> m_image_request;
void animate();
Gfx::Bitmap const* bitmap(size_t frame_index, Gfx::IntSize = {}) const;