diff options
Diffstat (limited to 'components/canvas/canvas_paint_thread.rs')
-rw-r--r-- | components/canvas/canvas_paint_thread.rs | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/components/canvas/canvas_paint_thread.rs b/components/canvas/canvas_paint_thread.rs index 7f0130e8f3e..3e66194e94c 100644 --- a/components/canvas/canvas_paint_thread.rs +++ b/components/canvas/canvas_paint_thread.rs @@ -132,34 +132,27 @@ impl<'a> CanvasPaintThread <'a> { self.canvas(canvas_id).is_point_in_path(x, y, fill_rule, chan) }, Canvas2dMsg::DrawImage( - mut imagedata, + imagedata, image_size, dest_rect, source_rect, smoothing_enabled, ) => { - byte_swap(&mut imagedata); + let data = match imagedata { + None => vec![0; image_size.width as usize * image_size.height as usize * 4], + Some(mut data) => { + byte_swap(&mut data); + data.into() + }, + }; self.canvas(canvas_id).draw_image( - imagedata.into(), + data, image_size, dest_rect, source_rect, smoothing_enabled, ) }, - Canvas2dMsg::DrawImageSelf( - image_size, - dest_rect, - source_rect, - smoothing_enabled - ) => { - self.canvas(canvas_id).draw_image_self( - image_size, - dest_rect, - source_rect, - smoothing_enabled - ) - }, Canvas2dMsg::DrawImageInOther( other_canvas_id, image_size, @@ -167,9 +160,10 @@ impl<'a> CanvasPaintThread <'a> { source_rect, smoothing ) => { - let mut image_data = self.canvas(canvas_id).read_pixels( - source_rect.to_i32(), - image_size); + let image_data = self.canvas(canvas_id).read_pixels( + source_rect.to_i32(), + image_size, + ); self.canvas(other_canvas_id).draw_image( image_data.into(), source_rect.size, |