From 7e5160b79e9443894ae14164ffd7df28408cadb8 Mon Sep 17 00:00:00 2001 From: Igor Gutorov Date: Tue, 20 Mar 2018 21:13:29 +0200 Subject: [PATCH] Simplify BufferParameter --- components/canvas/webgl_thread.rs | 9 ++------ components/canvas_traits/webgl.rs | 2 +- .../script/dom/webglrenderingcontext.rs | 22 +++++++++++-------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index f4f90b5a629..b0248fc4dfc 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -1112,13 +1112,8 @@ impl WebGLImpl { fn buffer_parameter(gl: &gl::Gl, target: u32, param_id: u32, - chan: WebGLSender>) { - let result = match param_id { - gl::BUFFER_SIZE | - gl::BUFFER_USAGE => - Ok(WebGLParameter::Int(gl.get_buffer_parameter_iv(target, param_id))), - _ => Err(WebGLError::InvalidEnum), - }; + chan: WebGLSender) { + let result = gl.get_buffer_parameter_iv(target, param_id); chan.send(result).unwrap(); } diff --git a/components/canvas_traits/webgl.rs b/components/canvas_traits/webgl.rs index a9bfadeea17..a54d614ee46 100644 --- a/components/canvas_traits/webgl.rs +++ b/components/canvas_traits/webgl.rs @@ -204,7 +204,7 @@ pub enum WebGLCommand { EnableVertexAttribArray(u32), FramebufferRenderbuffer(u32, u32, u32, Option), FramebufferTexture2D(u32, u32, u32, Option, i32), - GetBufferParameter(u32, u32, WebGLSender>), + GetBufferParameter(u32, u32, WebGLSender), GetExtensions(WebGLSender), GetParameter(u32, WebGLSender>), GetTexParameter(u32, u32, WebGLSender), diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 8373f39da0a..799a1a20e46 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -1246,17 +1246,21 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { #[allow(unsafe_code)] // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.5 unsafe fn GetBufferParameter(&self, _cx: *mut JSContext, target: u32, parameter: u32) -> JSVal { + let parameter_matches = match parameter { + constants::BUFFER_SIZE | + constants::BUFFER_USAGE => true, + _ => false, + }; + + if !parameter_matches { + self.webgl_error(InvalidEnum); + return NullValue(); + } + let (sender, receiver) = webgl_channel().unwrap(); self.send_command(WebGLCommand::GetBufferParameter(target, parameter, sender)); - match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) { - WebGLParameter::Int(val) => Int32Value(val), - WebGLParameter::Bool(_) => panic!("Buffer parameter should not be bool"), - WebGLParameter::Float(_) => panic!("Buffer parameter should not be float"), - WebGLParameter::FloatArray(_) => panic!("Buffer parameter should not be float array"), - WebGLParameter::String(_) => panic!("Buffer parameter should not be string"), - WebGLParameter::Invalid => NullValue(), - } + Int32Value(receiver.recv().unwrap()) } #[allow(unsafe_code)] @@ -2428,7 +2432,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { let (sender, receiver) = webgl_channel().unwrap(); self.send_command(WebGLCommand::GetVertexAttribOffset(index, pname, sender)); - receiver.recv().unwrap() + receiver.recv().unwrap() as i64 } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3