瀏覽代碼

LibWeb/WebGL: Don't crash on unknown getParameter on the context

And allow the implementation to set the error code.
Andrew Kaster 7 月之前
父節點
當前提交
56d45282ea

+ 1 - 1
Libraries/LibWeb/WebGL/WebGL2RenderingContext.h

@@ -73,7 +73,7 @@ private:
 
     GLenum m_error { 0 };
 
-    void set_error(GLenum error);
+    virtual void set_error(GLenum error) override;
 };
 
 }

+ 1 - 1
Libraries/LibWeb/WebGL/WebGLRenderingContext.h

@@ -72,7 +72,7 @@ private:
 
     GLenum m_error { 0 };
 
-    void set_error(GLenum error);
+    virtual void set_error(GLenum error) override;
 };
 
 void fire_webgl_context_event(HTML::HTMLCanvasElement& canvas_element, FlyString const& type);

+ 4 - 1
Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp

@@ -231,7 +231,9 @@ static void generate_get_parameter(SourceGenerator& generator)
 
     generator.appendln(R"~~~(
     default:
-        TODO();
+        dbgln("Unknown WebGL parameter name: {:x}", pname);
+        set_error(GL_INVALID_ENUM);
+        return JS::js_null();
     })~~~");
 }
 
@@ -389,6 +391,7 @@ public:
 
     virtual void present() = 0;
     virtual void needs_to_present() = 0;
+    virtual void set_error(GLenum) = 0;
 )~~~");
 
     for (auto const& function : interface.functions) {