diff options
author | Emilio Cobos Álvarez <ecoal95@gmail.com> | 2016-11-06 16:50:39 +0100 |
---|---|---|
committer | Emilio Cobos Álvarez <ecoal95@gmail.com> | 2016-11-07 11:28:40 +0100 |
commit | 2e69143f6badadc055465b35a0e0959e38cc3bb5 (patch) | |
tree | a6d765d45819efd85ffc8bece93df7aa3e3644aa /components/canvas/canvas_paint_thread.rs | |
parent | 1c26f44cbb23e7da3b9d63f0223c8d5d43eec958 (diff) | |
download | servo-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.rs | 19 |
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(); }) } |