aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/webglrenderingcontext.rs24
1 files changed, 10 insertions, 14 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 631ad4ca84f..7a6b558144c 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -2202,13 +2202,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
}
- {
- // https://www.khronos.org/registry/webgl/specs/latest/1.0/#6.2
- let buffers = self.vertex_attribs.borrow();
- if buffers.iter().any(|data| data.enabled_as_array && data.buffer.is_none()) {
- return self.webgl_error(InvalidOperation);
- }
- }
+ handle_potential_webgl_error!(self, self.vertex_attribs.validate_for_draw(), return);
if !self.validate_framebuffer_complete() {
return;
@@ -2277,13 +2271,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
}
- {
- // https://www.khronos.org/registry/webgl/specs/latest/1.0/#6.2
- let buffers = self.vertex_attribs.borrow();
- if buffers.iter().any(|data| data.enabled_as_array && data.buffer.is_none()) {
- return self.webgl_error(InvalidOperation);
- }
- }
+ handle_potential_webgl_error!(self, self.vertex_attribs.validate_for_draw(), return);
if !self.validate_framebuffer_complete() {
return;
@@ -3852,6 +3840,14 @@ impl VertexAttribs {
fn bind_buffer(&self, index: u32, buffer: &WebGLBuffer) {
self.attribs.borrow_mut()[index as usize].buffer = Some(Dom::from_ref(buffer));
}
+
+ fn validate_for_draw(&self) -> WebGLResult<()> {
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#6.2
+ if self.borrow().iter().any(|data| data.enabled_as_array && data.buffer.is_none()) {
+ return Err(InvalidOperation);
+ }
+ Ok(())
+ }
}
#[derive(Clone, Default, JSTraceable, MallocSizeOf)]