diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2018-10-06 02:58:45 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2018-10-06 02:59:25 +0200 |
commit | 75e6f5dfaabd8ff01916b929edaceedf47fe6309 (patch) | |
tree | e3975d219261b8f114f04bfc949b3deb08d77bdd /components/script/dom/canvasrenderingcontext2d.rs | |
parent | 19f40cdf0ba09a767e65ee3f0bd37622cc341bde (diff) | |
download | servo-75e6f5dfaabd8ff01916b929edaceedf47fe6309.tar.gz servo-75e6f5dfaabd8ff01916b929edaceedf47fe6309.zip |
Avoid copying pixels in ctx.putImageData sometimes
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 1f3b9ab92cd..69c7d4038cd 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -1197,6 +1197,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { } // https://html.spec.whatwg.org/multipage/#dom-context-2d-putimagedata + #[allow(unsafe_code)] fn PutImageData_( &self, imagedata: &ImageData, @@ -1281,11 +1282,13 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { let dirty_rect = Rect::new(Point2D::new(dirty_x, dirty_y), dirty_size); // Step 7. + let (sender, receiver) = ipc::bytes_channel().unwrap(); self.send_canvas_2d_msg(Canvas2dMsg::PutImageData( - imagedata.get_rect(dirty_rect.try_cast().unwrap()).into(), + receiver, origin.to_vector(), dirty_size, )); + sender.send(unsafe { &imagedata.get_rect(dirty_rect.try_cast().unwrap()) }).unwrap(); self.mark_as_dirty(); } |