mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-08 06:09:58 +00:00
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:
parent
e7aeb71d29
commit
044ac2dd28
Notes:
github-actions[bot]
2025-11-06 18:04:36 +00:00
Author: https://github.com/cqundefine
Commit: 044ac2dd28
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6711
Reviewed-by: https://github.com/awesomekling
3 changed files with 17 additions and 1 deletions
|
|
@ -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)
|
void WebGLRenderingContextBase::set_error(GLenum error)
|
||||||
{
|
{
|
||||||
|
if (m_error != GL_NO_ERROR)
|
||||||
|
return;
|
||||||
|
|
||||||
auto context_error = glGetError();
|
auto context_error = glGetError();
|
||||||
if (context_error != GL_NO_ERROR)
|
if (context_error != GL_NO_ERROR)
|
||||||
m_error = context_error;
|
m_error = context_error;
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@ protected:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GLenum get_error_value();
|
||||||
void set_error(GLenum error);
|
void set_error(GLenum error);
|
||||||
|
|
||||||
// UNPACK_FLIP_Y_WEBGL of type boolean
|
// UNPACK_FLIP_Y_WEBGL of type boolean
|
||||||
|
|
|
||||||
|
|
@ -1535,7 +1535,7 @@ JS::Value WebGLRenderingContextImpl::get_parameter(WebIDL::UnsignedLong pname)
|
||||||
WebIDL::UnsignedLong WebGLRenderingContextImpl::get_error()
|
WebIDL::UnsignedLong WebGLRenderingContextImpl::get_error()
|
||||||
{
|
{
|
||||||
m_context->make_current();
|
m_context->make_current();
|
||||||
return glGetError();
|
return get_error_value();
|
||||||
}
|
}
|
||||||
|
|
||||||
JS::Value WebGLRenderingContextImpl::get_program_parameter(GC::Root<WebGLProgram> program, WebIDL::UnsignedLong pname)
|
JS::Value WebGLRenderingContextImpl::get_program_parameter(GC::Root<WebGLProgram> program, WebIDL::UnsignedLong pname)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue