aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorIgor Gutorov <igootorov@gmail.com>2018-03-20 21:13:29 +0200
committerIgor Gutorov <igootorov@gmail.com>2018-03-20 21:24:10 +0200
commit7e5160b79e9443894ae14164ffd7df28408cadb8 (patch)
treed7e6a65b5ffc69b35a96e80e864498e97cb0bbb6 /components/script/dom/webglrenderingcontext.rs
parent0747853ad0b0d936704112691884e14d86047e9e (diff)
downloadservo-7e5160b79e9443894ae14164ffd7df28408cadb8.tar.gz
servo-7e5160b79e9443894ae14164ffd7df28408cadb8.zip
Simplify BufferParameter
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r--components/script/dom/webglrenderingcontext.rs22
1 files changed, 13 insertions, 9 deletions
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