/* * Copyright (c) 2024, Jelle Raaijmakers * Copyright (c) 2024, Aliaksandr Kalenik * Copyright (c) 2024, Luke Wilde * Copyright (c) 2025, Undefine * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include #include namespace Web::WebGL { GC_DEFINE_ALLOCATOR(WebGLUniformLocation); GC::Ref WebGLUniformLocation::create(JS::Realm& realm, GLuint handle, GC::Ptr parent_shader) { return realm.create(realm, handle, parent_shader); } WebGLUniformLocation::WebGLUniformLocation(JS::Realm& realm, GLuint handle, GC::Ptr parent_shader) : Bindings::PlatformObject(realm) , m_handle(handle) , m_parent_shader(parent_shader) { } WebGLUniformLocation::~WebGLUniformLocation() = default; void WebGLUniformLocation::initialize(JS::Realm& realm) { WEB_SET_PROTOTYPE_FOR_INTERFACE(WebGLUniformLocation); Base::initialize(realm); } void WebGLUniformLocation::visit_edges(Cell::Visitor& visitor) { Base::visit_edges(visitor); visitor.visit(m_parent_shader); } ErrorOr WebGLUniformLocation::handle(GC::Ptr current_shader) const { if (current_shader == m_parent_shader) return m_handle; return Error::from_errno(GL_INVALID_OPERATION); } }