diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2018-09-13 16:21:57 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2018-09-13 22:04:30 +0200 |
commit | 2f2331f149cedf54618298bb537d308b84414e05 (patch) | |
tree | 43c84ac2d6d01d6f8c04a556a5e2797b98ef4673 | |
parent | b5c469d52ec0c91d29f1c314406b591a8f75c46a (diff) | |
download | servo-2f2331f149cedf54618298bb537d308b84414e05.tar.gz servo-2f2331f149cedf54618298bb537d308b84414e05.zip |
Use a byte channel to retrieve pixels of 2D canvas
-rw-r--r-- | components/canvas/canvas_data.rs | 6 | ||||
-rw-r--r-- | components/canvas_traits/canvas.rs | 4 | ||||
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 10 |
3 files changed, 10 insertions, 10 deletions
diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs index dcacddae8b1..2c8dbe9981e 100644 --- a/components/canvas/canvas_data.rs +++ b/components/canvas/canvas_data.rs @@ -11,7 +11,7 @@ use azure::azure_hl::SurfacePattern; use canvas_traits::canvas::*; use cssparser::RGBA; use euclid::{Transform2D, Point2D, Vector2D, Rect, Size2D}; -use ipc_channel::ipc::IpcSender; +use ipc_channel::ipc::{IpcBytesSender, IpcSender}; use num_traits::ToPrimitive; use serde_bytes::ByteBuf; use std::mem; @@ -456,9 +456,9 @@ impl<'a> CanvasData<'a> { &self, dest_rect: Rect<i32>, canvas_size: Size2D<f64>, - chan: IpcSender<ByteBuf>, + sender: IpcBytesSender, ) { - chan.send(self.read_pixels(dest_rect, canvas_size).into()).unwrap(); + sender.send(&self.read_pixels(dest_rect, canvas_size)).unwrap(); } // https://html.spec.whatwg.org/multipage/#dom-context-2d-putimagedata diff --git a/components/canvas_traits/canvas.rs b/components/canvas_traits/canvas.rs index 6b66c88dda2..661bae6b606 100644 --- a/components/canvas_traits/canvas.rs +++ b/components/canvas_traits/canvas.rs @@ -4,7 +4,7 @@ use cssparser::RGBA; use euclid::{Transform2D, Point2D, Vector2D, Rect, Size2D}; -use ipc_channel::ipc::IpcSender; +use ipc_channel::ipc::{IpcBytesSender, IpcSender}; use serde_bytes::ByteBuf; use std::default::Default; use std::str::FromStr; @@ -51,7 +51,7 @@ pub enum Canvas2dMsg { Fill, FillText(String, f64, f64, Option<f64>), FillRect(Rect<f32>), - GetImageData(Rect<i32>, Size2D<f64>, IpcSender<ByteBuf>), + GetImageData(Rect<i32>, Size2D<f64>, IpcBytesSender), IsPointInPath(f64, f64, FillRule, IpcSender<bool>), LineTo(Point2D<f32>), MoveTo(Point2D<f32>), diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index e362fe40a05..5ee0a4c2204 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -32,7 +32,7 @@ use dom::imagedata::ImageData; use dom::node::{Node, NodeDamage, window_from_node}; use dom_struct::dom_struct; use euclid::{Transform2D, Point2D, Vector2D, Rect, Size2D, vec2}; -use ipc_channel::ipc::IpcSender; +use ipc_channel::ipc::{self, IpcSender}; use net_traits::image::base::PixelFormat; use net_traits::image_cache::CanRequestImages; use net_traits::image_cache::ImageCache; @@ -41,7 +41,7 @@ use net_traits::image_cache::ImageResponse; use net_traits::image_cache::ImageState; use net_traits::image_cache::UsePlaceholder; use num_traits::ToPrimitive; -use profile_traits::ipc; +use profile_traits::ipc as profiled_ipc; use script_traits::ScriptMsg; use servo_url::ServoUrl; use std::{cmp, fmt, mem}; @@ -130,7 +130,7 @@ impl CanvasRenderingContext2D { size: Size2D<i32>) -> CanvasRenderingContext2D { debug!("Creating new canvas rendering context."); - let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap(); + let (sender, receiver) = profiled_ipc::channel(global.time_profiler_chan().clone()).unwrap(); let script_to_constellation_chan = global.script_to_constellation_chan(); debug!("Asking constellation to create new canvas thread."); script_to_constellation_chan.send(ScriptMsg::CreateCanvasPaintThread(size, sender)).unwrap(); @@ -790,7 +790,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { CanvasFillRule::Nonzero => FillRule::Nonzero, CanvasFillRule::Evenodd => FillRule::Evenodd, }; - let (sender, receiver) = ipc::channel::<bool>(self.global().time_profiler_chan().clone()).unwrap(); + let (sender, receiver) = profiled_ipc::channel::<bool>(self.global().time_profiler_chan().clone()).unwrap(); self.send_canvas_2d_msg(Canvas2dMsg::IsPointInPath(x, y, fill_rule, sender)); receiver.recv().unwrap() } @@ -1107,7 +1107,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { let sh = cmp::max(1, sh.to_u32().unwrap()); let sw = cmp::max(1, sw.to_u32().unwrap()); - let (sender, receiver) = ipc::channel(self.global().time_profiler_chan().clone()).unwrap(); + let (sender, receiver) = ipc::bytes_channel().unwrap(); let dest_rect = Rect::new(Point2D::new(sx.to_i32().unwrap(), sy.to_i32().unwrap()), Size2D::new(sw as i32, sh as i32)); let canvas_size = self.canvas.as_ref().map(|c| c.get_size()).unwrap_or(Size2D::zero()); |