LibWeb: Fix WebGL getError

getError was just calling out to glGetError and never checking our
error value that we were maintaining ourselves.
This commit is contained in:
Undefine 2025-11-05 20:25:48 +01:00 committed by Andreas Kling
parent e7aeb71d29
commit 044ac2dd28
Notes: github-actions[bot] 2025-11-06 18:04:36 +00:00
3 changed files with 17 additions and 1 deletions

View file

@ -195,8 +195,23 @@ Optional<WebGLRenderingContextBase::ConvertedTexture> WebGLRenderingContextBase:
};
}
// TODO: The glGetError spec allows for queueing errors which is something we should probably do, for now
// this just keeps track of one error which is also fine by the spec
GLenum WebGLRenderingContextBase::get_error_value()
{
if (m_error == GL_NO_ERROR)
return glGetError();
auto error = m_error;
m_error = GL_NO_ERROR;
return error;
}
void WebGLRenderingContextBase::set_error(GLenum error)
{
if (m_error != GL_NO_ERROR)
return;
auto context_error = glGetError();
if (context_error != GL_NO_ERROR)
m_error = context_error;

View file

@ -138,6 +138,7 @@ protected:
return result;
}
GLenum get_error_value();
void set_error(GLenum error);
// UNPACK_FLIP_Y_WEBGL of type boolean

View file

@ -1535,7 +1535,7 @@ JS::Value WebGLRenderingContextImpl::get_parameter(WebIDL::UnsignedLong pname)
WebIDL::UnsignedLong WebGLRenderingContextImpl::get_error()
{
m_context->make_current();
return glGetError();
return get_error_value();
}
JS::Value WebGLRenderingContextImpl::get_program_parameter(GC::Root<WebGLProgram> program, WebIDL::UnsignedLong pname)