diff --git a/components/canvas/canvas_paint_task.rs b/components/canvas/canvas_paint_task.rs index c2921561c49..28a3a22b563 100644 --- a/components/canvas/canvas_paint_task.rs +++ b/components/canvas/canvas_paint_task.rs @@ -594,7 +594,7 @@ impl<'a> CanvasPaintTask<'a> { fn put_image_data(&mut self, mut imagedata: Vec, image_data_rect: Rect, - dirty_rect: Option>) { + dirty_rect: Rect) { if image_data_rect.size.width <= 0.0 || image_data_rect.size.height <= 0.0 { return @@ -604,18 +604,9 @@ impl<'a> CanvasPaintTask<'a> { // rgba -> bgra byte_swap(&mut imagedata); - let image_rect = Rect::new(Point2D::zero(), - Size2D::new(image_data_rect.size.width, image_data_rect.size.height)); - // Dirty rectangle defines the area of the source image to be copied // on the destination canvas - let source_rect = match dirty_rect { - Some(dirty_rect) => - self.calculate_dirty_rect(dirty_rect, image_data_rect), - // If no dirty area is provided we consider the whole source image - // as the area to be copied to the canvas - None => image_rect, - }; + let source_rect = self.calculate_dirty_rect(dirty_rect, image_data_rect); // 5) If either dirtyWidth or dirtyHeight is negative or zero, // stop without affecting any bitmaps diff --git a/components/canvas_traits/lib.rs b/components/canvas_traits/lib.rs index 48cabed045c..f7abcb49dee 100644 --- a/components/canvas_traits/lib.rs +++ b/components/canvas_traits/lib.rs @@ -91,7 +91,7 @@ pub enum Canvas2dMsg { GetImageData(Rect, Size2D, IpcSender>), LineTo(Point2D), MoveTo(Point2D), - PutImageData(Vec, Rect, Option>), + PutImageData(Vec, Rect, Rect), QuadraticCurveTo(Point2D, Point2D), Rect(Rect), RestoreContext, diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index c9f8da05bff..89ec6a66119 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -929,8 +929,8 @@ impl<'a> CanvasRenderingContext2DMethods for &'a CanvasRenderingContext2D { let image_data_rect = Rect::new(Point2D::new(*dx, *dy), Size2D::new(imagedata.Width() as f64, imagedata.Height() as f64)); - let dirty_rect = Some(Rect::new(Point2D::new(*dirtyX, *dirtyY), - Size2D::new(*dirtyWidth, *dirtyHeight))); + let dirty_rect = Rect::new(Point2D::new(*dirtyX, *dirtyY), + Size2D::new(*dirtyWidth, *dirtyHeight)); let msg = CanvasMsg::Canvas2d(Canvas2dMsg::PutImageData(data, image_data_rect, dirty_rect)); self.ipc_renderer.send(msg).unwrap(); self.mark_as_dirty();