aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs13
1 files changed, 4 insertions, 9 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 15b6eb9560f..1f3b9ab92cd 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -1277,19 +1277,14 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
return;
}
- // FIXME(nox): There is no need to make a Vec<u8> of all the pixels
- // if we didn't want to put the entire image.
- let buffer = imagedata.get_data_array();
+ let dirty_size = Size2D::new(dirty_width, dirty_height);
+ let dirty_rect = Rect::new(Point2D::new(dirty_x, dirty_y), dirty_size);
// Step 7.
self.send_canvas_2d_msg(Canvas2dMsg::PutImageData(
- buffer.into(),
+ imagedata.get_rect(dirty_rect.try_cast().unwrap()).into(),
origin.to_vector(),
- imagedata_size,
- Rect::new(
- Point2D::new(dirty_x, dirty_y),
- Size2D::new(dirty_width, dirty_height),
- ),
+ dirty_size,
));
self.mark_as_dirty();
}