aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/canvas_paint_thread.rs
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <ecoal95@gmail.com>2016-11-06 16:50:39 +0100
committerEmilio Cobos Álvarez <ecoal95@gmail.com>2016-11-07 11:28:40 +0100
commit2e69143f6badadc055465b35a0e0959e38cc3bb5 (patch)
treea6d765d45819efd85ffc8bece93df7aa3e3644aa /components/canvas/canvas_paint_thread.rs
parent1c26f44cbb23e7da3b9d63f0223c8d5d43eec958 (diff)
downloadservo-2e69143f6badadc055465b35a0e0959e38cc3bb5.tar.gz
servo-2e69143f6badadc055465b35a0e0959e38cc3bb5.zip
canvas: Cleanup CanvasData and layout and script messages.
Diffstat (limited to 'components/canvas/canvas_paint_thread.rs')
-rw-r--r--components/canvas/canvas_paint_thread.rs19
1 files changed, 15 insertions, 4 deletions
diff --git a/components/canvas/canvas_paint_thread.rs b/components/canvas/canvas_paint_thread.rs
index b87470f53c6..26863482a99 100644
--- a/components/canvas/canvas_paint_thread.rs
+++ b/components/canvas/canvas_paint_thread.rs
@@ -12,7 +12,6 @@ use euclid::point::Point2D;
use euclid::rect::Rect;
use euclid::size::Size2D;
use ipc_channel::ipc::{self, IpcSender};
-use ipc_channel::ipc::IpcSharedMemory;
use num_traits::ToPrimitive;
use std::borrow::ToOwned;
use std::mem;
@@ -195,6 +194,13 @@ impl<'a> CanvasPaintThread<'a> {
CanvasCommonMsg::Recreate(size) => painter.recreate(size),
}
},
+ CanvasMsg::FromScript(message) => {
+ match message {
+ FromScriptMsg::SendPixels(chan) => {
+ painter.send_pixels(chan)
+ }
+ }
+ }
CanvasMsg::FromLayout(message) => {
match message {
FromLayoutMsg::SendData(chan) => {
@@ -539,6 +545,12 @@ impl<'a> CanvasPaintThread<'a> {
self.drawtarget = CanvasPaintThread::create(size);
}
+ fn send_pixels(&mut self, chan: IpcSender<Option<Vec<u8>>>) {
+ self.drawtarget.snapshot().get_data_surface().with_data(|element| {
+ chan.send(Some(element.into())).unwrap();
+ })
+ }
+
fn send_data(&mut self, chan: IpcSender<CanvasData>) {
self.drawtarget.snapshot().get_data_surface().with_data(|element| {
let size = self.drawtarget.get_size();
@@ -548,11 +560,10 @@ impl<'a> CanvasPaintThread<'a> {
webrender_traits::ImageFormat::RGBA8,
element.into());
- let pixel_data = CanvasPixelData {
- image_data: IpcSharedMemory::from_bytes(element),
+ let data = CanvasImageData {
image_key: self.webrender_image_key,
};
- chan.send(CanvasData::Pixels(pixel_data)).unwrap();
+ chan.send(CanvasData::Image(data)).unwrap();
})
}