aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-10-06 02:58:45 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2018-10-06 02:59:25 +0200
commit75e6f5dfaabd8ff01916b929edaceedf47fe6309 (patch)
treee3975d219261b8f114f04bfc949b3deb08d77bdd /components/script/dom/canvasrenderingcontext2d.rs
parent19f40cdf0ba09a767e65ee3f0bd37622cc341bde (diff)
downloadservo-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.rs5
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();
}