aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-03-23 18:41:32 +0100
committerAnthony Ramine <n.oxyde@gmail.com>2018-03-26 20:48:02 +0200
commitce81420befd0fd0e8335cb676487479e2cc0f985 (patch)
tree4d883ab322c58496073f43d29c737e35ca23871a /components/script/dom/webglrenderingcontext.rs
parent3ce3f39383c8217a30b15d27f3121f96bbe0014d (diff)
downloadservo-ce81420befd0fd0e8335cb676487479e2cc0f985.tar.gz
servo-ce81420befd0fd0e8335cb676487479e2cc0f985.zip
Use ByteBuf for the canvas messages
The type Vec<u8> is super unefficient to work with in Serde if all you want to represent is a simple blob.
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r--components/script/dom/webglrenderingcontext.rs39
1 files changed, 26 insertions, 13 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 436372d6c16..268a37f13f4 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -1050,12 +1050,15 @@ impl WebGLRenderingContext {
let internal_format = self.extension_manager.get_effective_tex_internal_format(format, data_type);
// TODO(emilio): convert colorspace if requested
- let msg = WebGLCommand::TexImage2D(target.as_gl_constant(), level as i32,
- internal_format as i32,
- width as i32, height as i32,
- format,
- data_type,
- pixels);
+ let msg = WebGLCommand::TexImage2D(
+ target.as_gl_constant(),
+ level as i32,
+ internal_format as i32,
+ width as i32, height as i32,
+ format,
+ data_type,
+ pixels.into(),
+ );
self.send_command(msg);
@@ -1102,11 +1105,17 @@ impl WebGLRenderingContext {
self.send_command(WebGLCommand::PixelStorei(constants::UNPACK_ALIGNMENT, unpacking_alignment as i32));
// TODO(emilio): convert colorspace if requested
- let msg = WebGLCommand::TexSubImage2D(target.as_gl_constant(),
- level as i32, xoffset, yoffset,
- width as i32, height as i32,
- format.as_gl_constant(),
- data_type.as_gl_constant(), pixels);
+ let msg = WebGLCommand::TexSubImage2D(
+ target.as_gl_constant(),
+ level as i32,
+ xoffset,
+ yoffset,
+ width as i32,
+ height as i32,
+ format.as_gl_constant(),
+ data_type.as_gl_constant(),
+ pixels.into(),
+ );
self.send_command(msg);
}
@@ -1182,7 +1191,7 @@ impl WebGLRenderingContext {
constants::UNSIGNED_BYTE,
sender,
));
- Some(receiver.recv().unwrap())
+ Some(receiver.recv().unwrap().into())
}
}
@@ -1759,7 +1768,11 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
if (offset as usize) + data_vec.len() > bound_buffer.capacity() {
return self.webgl_error(InvalidValue);
}
- self.send_command(WebGLCommand::BufferSubData(target, offset as isize, data_vec));
+ self.send_command(WebGLCommand::BufferSubData(
+ target,
+ offset as isize,
+ data_vec.into(),
+ ));
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.8