mirror of
https://github.com/servo/servo.git
synced 2025-07-24 07:40:27 +01:00
Simplify BufferParameter
This commit is contained in:
parent
0747853ad0
commit
7e5160b79e
3 changed files with 16 additions and 17 deletions
|
@ -1112,13 +1112,8 @@ impl WebGLImpl {
|
||||||
fn buffer_parameter(gl: &gl::Gl,
|
fn buffer_parameter(gl: &gl::Gl,
|
||||||
target: u32,
|
target: u32,
|
||||||
param_id: u32,
|
param_id: u32,
|
||||||
chan: WebGLSender<WebGLResult<WebGLParameter>>) {
|
chan: WebGLSender<i32>) {
|
||||||
let result = match param_id {
|
let result = gl.get_buffer_parameter_iv(target, param_id);
|
||||||
gl::BUFFER_SIZE |
|
|
||||||
gl::BUFFER_USAGE =>
|
|
||||||
Ok(WebGLParameter::Int(gl.get_buffer_parameter_iv(target, param_id))),
|
|
||||||
_ => Err(WebGLError::InvalidEnum),
|
|
||||||
};
|
|
||||||
|
|
||||||
chan.send(result).unwrap();
|
chan.send(result).unwrap();
|
||||||
}
|
}
|
||||||
|
|
|
@ -204,7 +204,7 @@ pub enum WebGLCommand {
|
||||||
EnableVertexAttribArray(u32),
|
EnableVertexAttribArray(u32),
|
||||||
FramebufferRenderbuffer(u32, u32, u32, Option<WebGLRenderbufferId>),
|
FramebufferRenderbuffer(u32, u32, u32, Option<WebGLRenderbufferId>),
|
||||||
FramebufferTexture2D(u32, u32, u32, Option<WebGLTextureId>, i32),
|
FramebufferTexture2D(u32, u32, u32, Option<WebGLTextureId>, i32),
|
||||||
GetBufferParameter(u32, u32, WebGLSender<WebGLResult<WebGLParameter>>),
|
GetBufferParameter(u32, u32, WebGLSender<i32>),
|
||||||
GetExtensions(WebGLSender<String>),
|
GetExtensions(WebGLSender<String>),
|
||||||
GetParameter(u32, WebGLSender<WebGLResult<WebGLParameter>>),
|
GetParameter(u32, WebGLSender<WebGLResult<WebGLParameter>>),
|
||||||
GetTexParameter(u32, u32, WebGLSender<i32>),
|
GetTexParameter(u32, u32, WebGLSender<i32>),
|
||||||
|
|
|
@ -1246,17 +1246,21 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.5
|
// 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 {
|
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();
|
let (sender, receiver) = webgl_channel().unwrap();
|
||||||
self.send_command(WebGLCommand::GetBufferParameter(target, parameter, sender));
|
self.send_command(WebGLCommand::GetBufferParameter(target, parameter, sender));
|
||||||
|
|
||||||
match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) {
|
Int32Value(receiver.recv().unwrap())
|
||||||
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(),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
|
@ -2428,7 +2432,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
let (sender, receiver) = webgl_channel().unwrap();
|
let (sender, receiver) = webgl_channel().unwrap();
|
||||||
self.send_command(WebGLCommand::GetVertexAttribOffset(index, pname, sender));
|
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
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue