aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-09-13 16:21:57 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2018-09-13 22:04:30 +0200
commit2f2331f149cedf54618298bb537d308b84414e05 (patch)
tree43c84ac2d6d01d6f8c04a556a5e2797b98ef4673
parentb5c469d52ec0c91d29f1c314406b591a8f75c46a (diff)
downloadservo-2f2331f149cedf54618298bb537d308b84414e05.tar.gz
servo-2f2331f149cedf54618298bb537d308b84414e05.zip
Use a byte channel to retrieve pixels of 2D canvas
-rw-r--r--components/canvas/canvas_data.rs6
-rw-r--r--components/canvas_traits/canvas.rs4
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs10
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());