aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/canvas_paint_thread.rs
diff options
context:
space:
mode:
authorGlenn Watson <github@intuitionlibrary.com>2016-10-12 10:13:27 +1000
committerGlenn Watson <github@intuitionlibrary.com>2016-10-18 10:21:27 +1000
commitacfdfd2fa98562c9f891fbee2dbc3424803c1a3c (patch)
treebc66667bab89db2ab6a1c4d4113525190fb82d3a /components/canvas/canvas_paint_thread.rs
parent4af21e3ae1676f943a9a01688fef854487bcddfc (diff)
downloadservo-acfdfd2fa98562c9f891fbee2dbc3424803c1a3c.tar.gz
servo-acfdfd2fa98562c9f891fbee2dbc3424803c1a3c.zip
Remove old rendering backend.
This removes paint threads, rust-layers dependency, and changes optional webrender types to be required. The use_webrender option has been removed, however I've left the "-w" command line option in place so that wpt runner can continue to pass that. Once it's removed from there we can also remove the -w option. Once this stage is complete, it should be fine to change the display list building code to generate webrender display lists directly and avoid the conversion step.
Diffstat (limited to 'components/canvas/canvas_paint_thread.rs')
-rw-r--r--components/canvas/canvas_paint_thread.rs30
1 files changed, 13 insertions, 17 deletions
diff --git a/components/canvas/canvas_paint_thread.rs b/components/canvas/canvas_paint_thread.rs
index ef084dde9d9..238ff9c06db 100644
--- a/components/canvas/canvas_paint_thread.rs
+++ b/components/canvas/canvas_paint_thread.rs
@@ -58,8 +58,8 @@ pub struct CanvasPaintThread<'a> {
path_builder: PathBuilder,
state: CanvasPaintState<'a>,
saved_states: Vec<CanvasPaintState<'a>>,
- webrender_api: Option<webrender_traits::RenderApi>,
- webrender_image_key: Option<webrender_traits::ImageKey>,
+ webrender_api: webrender_traits::RenderApi,
+ webrender_image_key: webrender_traits::ImageKey,
}
#[derive(Clone)]
@@ -100,12 +100,12 @@ impl<'a> CanvasPaintState<'a> {
impl<'a> CanvasPaintThread<'a> {
fn new(size: Size2D<i32>,
- webrender_api_sender: Option<webrender_traits::RenderApiSender>,
+ webrender_api_sender: webrender_traits::RenderApiSender,
antialias: bool) -> CanvasPaintThread<'a> {
let draw_target = CanvasPaintThread::create(size);
let path_builder = draw_target.create_path_builder();
- let webrender_api = webrender_api_sender.map(|wr| wr.create_api());
- let webrender_image_key = webrender_api.as_ref().map(|wr| wr.alloc_image());
+ let webrender_api = webrender_api_sender.create_api();
+ let webrender_image_key = webrender_api.alloc_image();
CanvasPaintThread {
drawtarget: draw_target,
path_builder: path_builder,
@@ -119,7 +119,7 @@ impl<'a> CanvasPaintThread<'a> {
/// Creates a new `CanvasPaintThread` and returns an `IpcSender` to
/// communicate with it.
pub fn start(size: Size2D<i32>,
- webrender_api_sender: Option<webrender_traits::RenderApiSender>,
+ webrender_api_sender: webrender_traits::RenderApiSender,
antialias: bool)
-> IpcSender<CanvasMsg> {
let (sender, receiver) = ipc::channel::<CanvasMsg>().unwrap();
@@ -542,14 +542,12 @@ impl<'a> CanvasPaintThread<'a> {
fn send_data(&mut self, chan: IpcSender<CanvasData>) {
self.drawtarget.snapshot().get_data_surface().with_data(|element| {
- if let Some(ref webrender_api) = self.webrender_api {
- let size = self.drawtarget.get_size();
- webrender_api.update_image(self.webrender_image_key.unwrap(),
- size.width as u32,
- size.height as u32,
- webrender_traits::ImageFormat::RGBA8,
- element.into());
- }
+ let size = self.drawtarget.get_size();
+ self.webrender_api.update_image(self.webrender_image_key,
+ size.width as u32,
+ size.height as u32,
+ webrender_traits::ImageFormat::RGBA8,
+ element.into());
let pixel_data = CanvasPixelData {
image_data: IpcSharedMemory::from_bytes(element),
@@ -710,9 +708,7 @@ impl<'a> CanvasPaintThread<'a> {
impl<'a> Drop for CanvasPaintThread<'a> {
fn drop(&mut self) {
- if let Some(ref mut wr) = self.webrender_api {
- wr.delete_image(self.webrender_image_key.unwrap());
- }
+ self.webrender_api.delete_image(self.webrender_image_key);
}
}