diff --git a/Userland/Libraries/LibGL/GL/gl.h b/Userland/Libraries/LibGL/GL/gl.h index ec78376449..9e7694d2b1 100644 --- a/Userland/Libraries/LibGL/GL/gl.h +++ b/Userland/Libraries/LibGL/GL/gl.h @@ -414,6 +414,7 @@ GLAPI void glDeleteLists(GLuint list, GLsizei range); GLAPI void glListBase(GLuint base); GLAPI void glEndList(void); GLAPI void glNewList(GLuint list, GLenum mode); +GLAPI GLboolean glIsList(GLuint list); GLAPI void glFlush(); GLAPI void glFinish(); GLAPI void glBlendFunc(GLenum sfactor, GLenum dfactor); diff --git a/Userland/Libraries/LibGL/GLContext.h b/Userland/Libraries/LibGL/GLContext.h index 56e2337df9..42f392908d 100644 --- a/Userland/Libraries/LibGL/GLContext.h +++ b/Userland/Libraries/LibGL/GLContext.h @@ -54,6 +54,7 @@ public: virtual void gl_list_base(GLuint base) = 0; virtual void gl_end_list(void) = 0; virtual void gl_new_list(GLuint list, GLenum mode) = 0; + virtual GLboolean gl_is_list(GLuint list) = 0; virtual void gl_flush() = 0; virtual void gl_finish() = 0; virtual void gl_blend_func(GLenum src_factor, GLenum dst_factor) = 0; diff --git a/Userland/Libraries/LibGL/GLLists.cpp b/Userland/Libraries/LibGL/GLLists.cpp index e1b34ec691..5d901ba206 100644 --- a/Userland/Libraries/LibGL/GLLists.cpp +++ b/Userland/Libraries/LibGL/GLLists.cpp @@ -43,3 +43,8 @@ void glNewList(GLuint list, GLenum mode) { return g_gl_context->gl_new_list(list, mode); } + +GLboolean glIsList(GLuint list) +{ + return g_gl_context->gl_is_list(list); +} diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.cpp b/Userland/Libraries/LibGL/SoftwareGLContext.cpp index db0370e6d7..48a3faadc4 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.cpp +++ b/Userland/Libraries/LibGL/SoftwareGLContext.cpp @@ -1023,6 +1023,13 @@ void SoftwareGLContext::gl_new_list(GLuint list, GLenum mode) m_current_listing_index = CurrentListing { {}, static_cast(list - 1), mode }; } +GLboolean SoftwareGLContext::gl_is_list(GLuint list) +{ + RETURN_VALUE_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION, GL_FALSE); + + return list < m_listings.size() ? GL_TRUE : GL_FALSE; +} + void SoftwareGLContext::gl_flush() { RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION); diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.h b/Userland/Libraries/LibGL/SoftwareGLContext.h index fc2c18058c..19342056de 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.h +++ b/Userland/Libraries/LibGL/SoftwareGLContext.h @@ -65,6 +65,7 @@ public: virtual void gl_list_base(GLuint base) override; virtual void gl_end_list(void) override; virtual void gl_new_list(GLuint list, GLenum mode) override; + virtual GLboolean gl_is_list(GLuint list) override; virtual void gl_flush() override; virtual void gl_finish() override; virtual void gl_blend_func(GLenum src_factor, GLenum dst_factor) override;