mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Cache BUFFER_USAGE value on the DOM side
This commit is contained in:
parent
e06f0d32d0
commit
ae286a518d
4 changed files with 16 additions and 31 deletions
|
@ -1250,30 +1250,20 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
target: u32,
|
||||
parameter: u32,
|
||||
) -> JSVal {
|
||||
let buffer = handle_potential_webgl_error!(self, self.bound_buffer(target), return NullValue());
|
||||
let buffer = handle_potential_webgl_error!(
|
||||
self,
|
||||
self.bound_buffer(target).and_then(|buf| buf.ok_or(InvalidOperation)),
|
||||
return NullValue()
|
||||
);
|
||||
|
||||
match parameter {
|
||||
constants::BUFFER_SIZE | constants::BUFFER_USAGE => {},
|
||||
constants::BUFFER_SIZE => Int32Value(buffer.capacity() as i32),
|
||||
constants::BUFFER_USAGE => Int32Value(buffer.usage() as i32),
|
||||
_ => {
|
||||
self.webgl_error(InvalidEnum);
|
||||
return NullValue();
|
||||
NullValue()
|
||||
}
|
||||
}
|
||||
let buffer = match buffer {
|
||||
Some(buffer) => buffer,
|
||||
None => {
|
||||
self.webgl_error(InvalidOperation);
|
||||
return NullValue();
|
||||
}
|
||||
};
|
||||
|
||||
if parameter == constants::BUFFER_SIZE {
|
||||
return Int32Value(buffer.capacity() as i32);
|
||||
}
|
||||
|
||||
let (sender, receiver) = webgl_channel().unwrap();
|
||||
self.send_command(WebGLCommand::GetBufferParameter(target, parameter, sender));
|
||||
Int32Value(receiver.recv().unwrap())
|
||||
}
|
||||
|
||||
#[allow(unsafe_code)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue