浏览代码

LibGL: Implement `glIsList`

Jelle Raaijmakers 3 年之前
父节点
当前提交
506abf2a61

+ 1 - 0
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);

+ 1 - 0
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;

+ 5 - 0
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);
+}

+ 7 - 0
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<size_t>(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);

+ 1 - 0
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;