diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2018-03-23 18:41:32 +0100 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2018-03-26 20:48:02 +0200 |
commit | ce81420befd0fd0e8335cb676487479e2cc0f985 (patch) | |
tree | 4d883ab322c58496073f43d29c737e35ca23871a /components/script/dom/webglrenderingcontext.rs | |
parent | 3ce3f39383c8217a30b15d27f3121f96bbe0014d (diff) | |
download | servo-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.rs | 39 |
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 |