Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ namespace Web::WebGL::Extensions {

GC_DEFINE_ALLOCATOR(EXTTextureFilterAnisotropic);

JS::ThrowCompletionOr<GC::Ptr<EXTTextureFilterAnisotropic>> EXTTextureFilterAnisotropic::create(JS::Realm& realm, WebGLRenderingContextBase* context)
JS::ThrowCompletionOr<GC::Ptr<EXTTextureFilterAnisotropic>> EXTTextureFilterAnisotropic::create(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context)
{
return realm.create<EXTTextureFilterAnisotropic>(realm, context);
}

EXTTextureFilterAnisotropic::EXTTextureFilterAnisotropic(JS::Realm& realm, WebGLRenderingContextBase* context)
EXTTextureFilterAnisotropic::EXTTextureFilterAnisotropic(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context)
: PlatformObject(realm)
, m_context(context)
{
Expand All @@ -35,7 +35,7 @@ void EXTTextureFilterAnisotropic::initialize(JS::Realm& realm)
void EXTTextureFilterAnisotropic::visit_edges(Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_context->gc_cell());
visitor.visit(m_context);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,16 @@ class EXTTextureFilterAnisotropic : public Bindings::PlatformObject {
GC_DECLARE_ALLOCATOR(EXTTextureFilterAnisotropic);

public:
static JS::ThrowCompletionOr<GC::Ptr<EXTTextureFilterAnisotropic>> create(JS::Realm&, WebGLRenderingContextBase*);
static JS::ThrowCompletionOr<GC::Ptr<EXTTextureFilterAnisotropic>> create(JS::Realm&, GC::Ref<WebGLRenderingContextBase>);

protected:
void initialize(JS::Realm&) override;
void visit_edges(Visitor&) override;

private:
EXTTextureFilterAnisotropic(JS::Realm&, WebGLRenderingContextBase*);
EXTTextureFilterAnisotropic(JS::Realm&, GC::Ref<WebGLRenderingContextBase>);

// FIXME: It should be GC::Ptr instead of raw pointer, but we need to make WebGLRenderingContextBase inherit from PlatformObject first.
WebGLRenderingContextBase* m_context;
GC::Ref<WebGLRenderingContextBase> m_context;
};

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ namespace Web::WebGL::Extensions {

GC_DEFINE_ALLOCATOR(WebGLCompressedTextureS3tc);

JS::ThrowCompletionOr<GC::Ptr<WebGLCompressedTextureS3tc>> WebGLCompressedTextureS3tc::create(JS::Realm& realm, WebGLRenderingContextBase* context)
JS::ThrowCompletionOr<GC::Ptr<WebGLCompressedTextureS3tc>> WebGLCompressedTextureS3tc::create(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context)
{
return realm.create<WebGLCompressedTextureS3tc>(realm, context);
}

WebGLCompressedTextureS3tc::WebGLCompressedTextureS3tc(JS::Realm& realm, WebGLRenderingContextBase* context)
WebGLCompressedTextureS3tc::WebGLCompressedTextureS3tc(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context)
: PlatformObject(realm)
, m_context(context)
{
Expand All @@ -37,7 +37,7 @@ void WebGLCompressedTextureS3tc::initialize(JS::Realm& realm)
void WebGLCompressedTextureS3tc::visit_edges(Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_context->gc_cell());
visitor.visit(m_context);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,16 @@ class WebGLCompressedTextureS3tc : public Bindings::PlatformObject {
GC_DECLARE_ALLOCATOR(WebGLCompressedTextureS3tc);

public:
static JS::ThrowCompletionOr<GC::Ptr<WebGLCompressedTextureS3tc>> create(JS::Realm&, WebGLRenderingContextBase*);
static JS::ThrowCompletionOr<GC::Ptr<WebGLCompressedTextureS3tc>> create(JS::Realm&, GC::Ref<WebGLRenderingContextBase>);

protected:
void initialize(JS::Realm&) override;
void visit_edges(Visitor&) override;

private:
WebGLCompressedTextureS3tc(JS::Realm&, WebGLRenderingContextBase*);
WebGLCompressedTextureS3tc(JS::Realm&, GC::Ref<WebGLRenderingContextBase>);

// FIXME: It should be GC::Ptr instead of raw pointer, but we need to make WebGLRenderingContextBase inherit from PlatformObject first.
WebGLRenderingContextBase* m_context;
GC::Ref<WebGLRenderingContextBase> m_context;
};

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ namespace Web::WebGL::Extensions {

GC_DEFINE_ALLOCATOR(WebGLCompressedTextureS3tcSrgb);

JS::ThrowCompletionOr<GC::Ptr<WebGLCompressedTextureS3tcSrgb>> WebGLCompressedTextureS3tcSrgb::create(JS::Realm& realm, WebGLRenderingContextBase* context)
JS::ThrowCompletionOr<GC::Ptr<WebGLCompressedTextureS3tcSrgb>> WebGLCompressedTextureS3tcSrgb::create(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context)
{
return realm.create<WebGLCompressedTextureS3tcSrgb>(realm, context);
}

WebGLCompressedTextureS3tcSrgb::WebGLCompressedTextureS3tcSrgb(JS::Realm& realm, WebGLRenderingContextBase* context)
WebGLCompressedTextureS3tcSrgb::WebGLCompressedTextureS3tcSrgb(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context)
: PlatformObject(realm)
, m_context(context)
{
Expand All @@ -35,7 +35,7 @@ void WebGLCompressedTextureS3tcSrgb::initialize(JS::Realm& realm)
void WebGLCompressedTextureS3tcSrgb::visit_edges(Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_context->gc_cell());
visitor.visit(m_context);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,16 @@ class WebGLCompressedTextureS3tcSrgb : public Bindings::PlatformObject {
GC_DECLARE_ALLOCATOR(WebGLCompressedTextureS3tcSrgb);

public:
static JS::ThrowCompletionOr<GC::Ptr<WebGLCompressedTextureS3tcSrgb>> create(JS::Realm&, WebGLRenderingContextBase*);
static JS::ThrowCompletionOr<GC::Ptr<WebGLCompressedTextureS3tcSrgb>> create(JS::Realm&, GC::Ref<WebGLRenderingContextBase>);

protected:
void initialize(JS::Realm&) override;
void visit_edges(Visitor&) override;

private:
WebGLCompressedTextureS3tcSrgb(JS::Realm&, WebGLRenderingContextBase*);
WebGLCompressedTextureS3tcSrgb(JS::Realm&, GC::Ref<WebGLRenderingContextBase>);

// FIXME: It should be GC::Ptr instead of raw pointer, but we need to make WebGLRenderingContextBase inherit from PlatformObject first.
WebGLRenderingContextBase* m_context;
GC::Ref<WebGLRenderingContextBase> m_context;
};

}
9 changes: 4 additions & 5 deletions Libraries/LibWeb/WebGL/WebGL2RenderingContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,7 @@ JS::ThrowCompletionOr<GC::Ptr<WebGL2RenderingContext>> WebGL2RenderingContext::c
}

WebGL2RenderingContext::WebGL2RenderingContext(JS::Realm& realm, HTML::HTMLCanvasElement& canvas_element, NonnullOwnPtr<OpenGLContext> context, WebGLContextAttributes context_creation_parameters, WebGLContextAttributes actual_context_parameters)
: PlatformObject(realm)
, WebGL2RenderingContextOverloads(realm, move(context))
: WebGL2RenderingContextOverloads(realm, move(context))
, m_canvas_element(canvas_element)
, m_context_creation_parameters(context_creation_parameters)
, m_actual_context_parameters(actual_context_parameters)
Expand Down Expand Up @@ -165,7 +164,7 @@ JS::Object* WebGL2RenderingContext::get_extension(String const& name)

if (name.equals_ignoring_ascii_case("WEBGL_compressed_texture_s3tc"sv)) {
if (!m_webgl_compressed_texture_s3tc_extension) {
m_webgl_compressed_texture_s3tc_extension = MUST(Extensions::WebGLCompressedTextureS3tc::create(realm(), this));
m_webgl_compressed_texture_s3tc_extension = MUST(Extensions::WebGLCompressedTextureS3tc::create(realm(), *this));

m_enabled_compressed_texture_formats.append(GL_COMPRESSED_RGB_S3TC_DXT1_EXT);
m_enabled_compressed_texture_formats.append(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT);
Expand All @@ -179,7 +178,7 @@ JS::Object* WebGL2RenderingContext::get_extension(String const& name)

if (name.equals_ignoring_ascii_case("WEBGL_compressed_texture_s3tc_srgb"sv)) {
if (!m_webgl_compressed_texture_s3tc_srgb_extension) {
m_webgl_compressed_texture_s3tc_srgb_extension = MUST(Extensions::WebGLCompressedTextureS3tcSrgb::create(realm(), this));
m_webgl_compressed_texture_s3tc_srgb_extension = MUST(Extensions::WebGLCompressedTextureS3tcSrgb::create(realm(), *this));

m_enabled_compressed_texture_formats.append(GL_COMPRESSED_SRGB_S3TC_DXT1_EXT);
m_enabled_compressed_texture_formats.append(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT);
Expand Down Expand Up @@ -211,7 +210,7 @@ JS::Object* WebGL2RenderingContext::get_extension(String const& name)

if (name.equals_ignoring_ascii_case("EXT_texture_filter_anisotropic"sv)) {
if (!m_ext_texture_filter_anisotropic) {
m_ext_texture_filter_anisotropic = MUST(Extensions::EXTTextureFilterAnisotropic::create(realm(), this));
m_ext_texture_filter_anisotropic = MUST(Extensions::EXTTextureFilterAnisotropic::create(realm(), *this));
}

VERIFY(m_ext_texture_filter_anisotropic);
Expand Down
21 changes: 8 additions & 13 deletions Libraries/LibWeb/WebGL/WebGL2RenderingContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,15 @@

namespace Web::WebGL {

class WebGL2RenderingContext final : public Bindings::PlatformObject
, public WebGL2RenderingContextOverloads {
WEB_PLATFORM_OBJECT(WebGL2RenderingContext, Bindings::PlatformObject);
class WebGL2RenderingContext final : public WebGL2RenderingContextOverloads {
WEB_PLATFORM_OBJECT(WebGL2RenderingContext, WebGL2RenderingContextOverloads);
GC_DECLARE_ALLOCATOR(WebGL2RenderingContext);

public:
static JS::ThrowCompletionOr<GC::Ptr<WebGL2RenderingContext>> create(JS::Realm&, HTML::HTMLCanvasElement& canvas_element, JS::Value options);

virtual ~WebGL2RenderingContext() override;

// FIXME: This is a hack required to visit context from WebGLObject.
// It should be gone once WebGLRenderingContextBase inherits from PlatformObject.
GC::Cell const* gc_cell() const override { return this; }

void present() override;
void needs_to_present() override;

Expand All @@ -51,19 +46,19 @@ class WebGL2RenderingContext final : public Bindings::PlatformObject
WebIDL::Long drawing_buffer_width() const;
WebIDL::Long drawing_buffer_height() const;

virtual bool ext_texture_filter_anisotropic_extension_enabled() const override;
virtual bool angle_instanced_arrays_extension_enabled() const override;
virtual bool oes_standard_derivatives_extension_enabled() const override;
virtual bool webgl_draw_buffers_extension_enabled() const override;
virtual ReadonlySpan<WebIDL::UnsignedLong> enabled_compressed_texture_formats() const override;

private:
virtual void initialize(JS::Realm&) override;

WebGL2RenderingContext(JS::Realm&, HTML::HTMLCanvasElement&, NonnullOwnPtr<OpenGLContext> context, WebGLContextAttributes context_creation_parameters, WebGLContextAttributes actual_context_parameters);

virtual void visit_edges(Cell::Visitor&) override;

virtual bool ext_texture_filter_anisotropic_extension_enabled() const override;
virtual bool angle_instanced_arrays_extension_enabled() const override;
virtual bool oes_standard_derivatives_extension_enabled() const override;
virtual bool webgl_draw_buffers_extension_enabled() const override;
virtual ReadonlySpan<WebIDL::UnsignedLong> enabled_compressed_texture_formats() const override;

GC::Ref<HTML::HTMLCanvasElement> m_canvas_element;

// https://www.khronos.org/registry/webgl/specs/latest/1.0/#context-creation-parameters
Expand Down
20 changes: 10 additions & 10 deletions Libraries/LibWeb/WebGL/WebGL2RenderingContextImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,8 @@ JS::Value WebGL2RenderingContextImpl::get_internalformat_parameter(WebIDL::Unsig
size_t buffer_size = num_sample_counts * sizeof(GLint);
auto samples_buffer = MUST(ByteBuffer::create_zeroed(buffer_size));
glGetInternalformativRobustANGLE(target, internalformat, GL_SAMPLES, buffer_size, nullptr, reinterpret_cast<GLint*>(samples_buffer.data()));
auto array_buffer = JS::ArrayBuffer::create(m_realm, move(samples_buffer));
return JS::Int32Array::create(m_realm, num_sample_counts, array_buffer);
auto array_buffer = JS::ArrayBuffer::create(realm(), move(samples_buffer));
return JS::Int32Array::create(realm(), num_sample_counts, array_buffer);
}
default:
dbgln("Unknown WebGL internal format parameter name: {:x}", pname);
Expand Down Expand Up @@ -627,7 +627,7 @@ GC::Root<WebGLQuery> WebGL2RenderingContextImpl::create_query()

GLuint handle = 0;
glGenQueries(1, &handle);
return WebGLQuery::create(m_realm, *this, handle);
return WebGLQuery::create(realm(), *this, handle);
}

void WebGL2RenderingContextImpl::delete_query(GC::Root<WebGLQuery> query)
Expand Down Expand Up @@ -703,7 +703,7 @@ GC::Root<WebGLSampler> WebGL2RenderingContextImpl::create_sampler()

GLuint handle = 0;
glGenSamplers(1, &handle);
return WebGLSampler::create(m_realm, *this, handle);
return WebGLSampler::create(realm(), *this, handle);
}

void WebGL2RenderingContextImpl::delete_sampler(GC::Root<WebGLSampler> sampler)
Expand Down Expand Up @@ -824,7 +824,7 @@ GC::Root<WebGLSync> WebGL2RenderingContextImpl::fence_sync(WebIDL::UnsignedLong
m_context->make_current();

GLsync handle = glFenceSync(condition, flags);
return WebGLSync::create(m_realm, *this, handle);
return WebGLSync::create(realm(), *this, handle);
}

void WebGL2RenderingContextImpl::delete_sync(GC::Root<WebGLSync> sync)
Expand Down Expand Up @@ -903,7 +903,7 @@ GC::Root<WebGLTransformFeedback> WebGL2RenderingContextImpl::create_transform_fe

GLuint handle = 0;
glGenTransformFeedbacks(1, &handle);
return WebGLTransformFeedback::create(m_realm, *this, handle);
return WebGLTransformFeedback::create(realm(), *this, handle);
}

void WebGL2RenderingContextImpl::delete_transform_feedback(GC::Root<WebGLTransformFeedback> transform_feedback)
Expand Down Expand Up @@ -1079,7 +1079,7 @@ JS::Value WebGL2RenderingContextImpl::get_active_uniforms(GC::Root<WebGLProgram>
}
}

return JS::Array::create_from(m_realm, params_as_values);
return JS::Array::create_from(realm(), params_as_values);
}

WebIDL::UnsignedLong WebGL2RenderingContextImpl::get_uniform_block_index(GC::Root<WebGLProgram> program, String uniform_block_name)
Expand Down Expand Up @@ -1128,8 +1128,8 @@ JS::Value WebGL2RenderingContextImpl::get_active_uniform_block_parameter(GC::Roo
size_t buffer_size = num_active_uniforms * sizeof(GLint);
auto active_uniform_indices_buffer = MUST(ByteBuffer::create_zeroed(buffer_size));
glGetActiveUniformBlockivRobustANGLE(program_handle, uniform_block_index, GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, num_active_uniforms, nullptr, reinterpret_cast<GLint*>(active_uniform_indices_buffer.data()));
auto array_buffer = JS::ArrayBuffer::create(m_realm, move(active_uniform_indices_buffer));
return JS::Uint32Array::create(m_realm, num_active_uniforms, array_buffer);
auto array_buffer = JS::ArrayBuffer::create(realm(), move(active_uniform_indices_buffer));
return JS::Uint32Array::create(realm(), num_active_uniforms, array_buffer);
}
case GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:
case GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: {
Expand Down Expand Up @@ -1190,7 +1190,7 @@ GC::Root<WebGLVertexArrayObject> WebGL2RenderingContextImpl::create_vertex_array

GLuint handle = 0;
glGenVertexArrays(1, &handle);
return WebGLVertexArrayObject::create(m_realm, *this, handle);
return WebGLVertexArrayObject::create(realm(), *this, handle);
}

void WebGL2RenderingContextImpl::delete_vertex_array(GC::Root<WebGLVertexArrayObject> vertex_array)
Expand Down
2 changes: 2 additions & 0 deletions Libraries/LibWeb/WebGL/WebGL2RenderingContextImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ namespace Web::WebGL {
using namespace Web::HTML;

class WebGL2RenderingContextImpl : public WebGLRenderingContextImpl {
WEB_PLATFORM_OBJECT(WebGL2RenderingContextImpl, WebGLRenderingContextImpl);

public:
WebGL2RenderingContextImpl(JS::Realm&, NonnullOwnPtr<OpenGLContext>);

Expand Down
2 changes: 2 additions & 0 deletions Libraries/LibWeb/WebGL/WebGL2RenderingContextOverloads.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ namespace Web::WebGL {
using namespace Web::HTML;

class WebGL2RenderingContextOverloads : public WebGL2RenderingContextImpl {
WEB_PLATFORM_OBJECT(WebGL2RenderingContextOverloads, WebGL2RenderingContextImpl);

public:
WebGL2RenderingContextOverloads(JS::Realm&, NonnullOwnPtr<OpenGLContext>);

Expand Down
4 changes: 2 additions & 2 deletions Libraries/LibWeb/WebGL/WebGLBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ namespace Web::WebGL {

GC_DEFINE_ALLOCATOR(WebGLBuffer);

GC::Ref<WebGLBuffer> WebGLBuffer::create(JS::Realm& realm, WebGLRenderingContextBase& context, GLuint handle)
GC::Ref<WebGLBuffer> WebGLBuffer::create(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context, GLuint handle)
{
return realm.create<WebGLBuffer>(realm, context, handle);
}

WebGLBuffer::WebGLBuffer(JS::Realm& realm, WebGLRenderingContextBase& context, GLuint handle)
WebGLBuffer::WebGLBuffer(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context, GLuint handle)
: WebGLObject(realm, context, handle)
{
}
Expand Down
4 changes: 2 additions & 2 deletions Libraries/LibWeb/WebGL/WebGLBuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ class WebGLBuffer final : public WebGLObject {
GC_DECLARE_ALLOCATOR(WebGLBuffer);

public:
static GC::Ref<WebGLBuffer> create(JS::Realm& realm, WebGLRenderingContextBase& context, GLuint handle);
static GC::Ref<WebGLBuffer> create(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context, GLuint handle);

virtual ~WebGLBuffer();

bool is_compatible_with(GLenum target);

protected:
explicit WebGLBuffer(JS::Realm&, WebGLRenderingContextBase&, GLuint handle);
explicit WebGLBuffer(JS::Realm&, GC::Ref<WebGLRenderingContextBase>, GLuint handle);

virtual void initialize(JS::Realm&) override;

Expand Down
4 changes: 2 additions & 2 deletions Libraries/LibWeb/WebGL/WebGLFramebuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ namespace Web::WebGL {

GC_DEFINE_ALLOCATOR(WebGLFramebuffer);

GC::Ref<WebGLFramebuffer> WebGLFramebuffer::create(JS::Realm& realm, WebGLRenderingContextBase& context, GLuint handle)
GC::Ref<WebGLFramebuffer> WebGLFramebuffer::create(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context, GLuint handle)
{
return realm.create<WebGLFramebuffer>(realm, context, handle);
}

WebGLFramebuffer::WebGLFramebuffer(JS::Realm& realm, WebGLRenderingContextBase& context, GLuint handle)
WebGLFramebuffer::WebGLFramebuffer(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context, GLuint handle)
: WebGLObject(realm, context, handle)
{
}
Expand Down
4 changes: 2 additions & 2 deletions Libraries/LibWeb/WebGL/WebGLFramebuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ class WebGLFramebuffer final : public WebGLObject {
GC_DECLARE_ALLOCATOR(WebGLFramebuffer);

public:
static GC::Ref<WebGLFramebuffer> create(JS::Realm& realm, WebGLRenderingContextBase&, GLuint handle);
static GC::Ref<WebGLFramebuffer> create(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase>, GLuint handle);

virtual ~WebGLFramebuffer();

protected:
explicit WebGLFramebuffer(JS::Realm&, WebGLRenderingContextBase&, GLuint handle);
explicit WebGLFramebuffer(JS::Realm&, GC::Ref<WebGLRenderingContextBase>, GLuint handle);

virtual void initialize(JS::Realm&) override;
};
Expand Down
6 changes: 3 additions & 3 deletions Libraries/LibWeb/WebGL/WebGLObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@

namespace Web::WebGL {

WebGLObject::WebGLObject(JS::Realm& realm, WebGLRenderingContextBase& context, GLuint handle)
WebGLObject::WebGLObject(JS::Realm& realm, GC::Ref<WebGLRenderingContextBase> context, GLuint handle)
: Bindings::PlatformObject(realm)
, m_context(&context)
, m_context(context)
, m_handle(handle)
{
}
Expand All @@ -32,7 +32,7 @@ void WebGLObject::initialize(JS::Realm& realm)
void WebGLObject::visit_edges(Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_context->gc_cell());
visitor.visit(m_context);
}

ErrorOr<GLuint> WebGLObject::handle(WebGLRenderingContextBase const* context) const
Expand Down
Loading
Loading