diff options
author | Glenn Watson <github@intuitionlibrary.com> | 2017-08-08 07:51:30 +1000 |
---|---|---|
committer | Glenn Watson <github@intuitionlibrary.com> | 2017-08-09 07:05:05 +1000 |
commit | f6a9f15fed1a88949ea45875adc44b48c419f87b (patch) | |
tree | 9aa2a85547c3b6e2e52849d6569499c5821d8744 /components/canvas | |
parent | 689dadc75174eff892e1da9d072ee9f109ede925 (diff) | |
download | servo-f6a9f15fed1a88949ea45875adc44b48c419f87b.tar.gz servo-f6a9f15fed1a88949ea45875adc44b48c419f87b.zip |
Update WR.
* CPU text run optimizations.
* Linux subpixel positioning / rasterization.
* Update debug flags API.
* Update to resource transactions API.
Diffstat (limited to 'components/canvas')
-rw-r--r-- | components/canvas/canvas_paint_thread.rs | 30 | ||||
-rw-r--r-- | components/canvas/webgl_paint_thread.rs | 32 |
2 files changed, 39 insertions, 23 deletions
diff --git a/components/canvas/canvas_paint_thread.rs b/components/canvas/canvas_paint_thread.rs index b3433e62b50..b7e21777001 100644 --- a/components/canvas/canvas_paint_thread.rs +++ b/components/canvas/canvas_paint_thread.rs @@ -585,28 +585,32 @@ impl<'a> CanvasPaintThread<'a> { }; let data = webrender_api::ImageData::Raw(Arc::new(element.into())); + let mut updates = webrender_api::ResourceUpdates::new(); + match self.image_key { Some(image_key) => { debug!("Updating image {:?}.", image_key); - self.webrender_api.update_image(image_key, - descriptor, - data, - None); + updates.update_image(image_key, + descriptor, + data, + None); } None => { self.image_key = Some(self.webrender_api.generate_image_key()); debug!("New image {:?}.", self.image_key); - self.webrender_api.add_image(self.image_key.unwrap(), - descriptor, - data, - None); + updates.add_image(self.image_key.unwrap(), + descriptor, + data, + None); } } if let Some(image_key) = mem::replace(&mut self.very_old_image_key, self.old_image_key.take()) { - self.webrender_api.delete_image(image_key); + updates.delete_image(image_key); } + self.webrender_api.update_resources(updates); + let data = CanvasImageData { image_key: self.image_key.unwrap(), }; @@ -764,12 +768,16 @@ impl<'a> CanvasPaintThread<'a> { impl<'a> Drop for CanvasPaintThread<'a> { fn drop(&mut self) { + let mut updates = webrender_api::ResourceUpdates::new(); + if let Some(image_key) = self.old_image_key.take() { - self.webrender_api.delete_image(image_key); + updates.delete_image(image_key); } if let Some(image_key) = self.very_old_image_key.take() { - self.webrender_api.delete_image(image_key); + updates.delete_image(image_key); } + + self.webrender_api.update_resources(updates); } } diff --git a/components/canvas/webgl_paint_thread.rs b/components/canvas/webgl_paint_thread.rs index abd6e4d00a0..2b6819effba 100644 --- a/components/canvas/webgl_paint_thread.rs +++ b/components/canvas/webgl_paint_thread.rs @@ -281,26 +281,30 @@ impl WebGLPaintThread { }; let data = webrender_api::ImageData::Raw(Arc::new(pixels)); + let mut updates = webrender_api::ResourceUpdates::new(); + match *image_key { Some(image_key) => { - webrender_api.update_image(image_key, - descriptor, - data, - None); + updates.update_image(image_key, + descriptor, + data, + None); } None => { *image_key = Some(webrender_api.generate_image_key()); - webrender_api.add_image(image_key.unwrap(), - descriptor, - data, - None); + updates.add_image(image_key.unwrap(), + descriptor, + data, + None); } } if let Some(image_key) = mem::replace(very_old_image_key, old_image_key.take()) { - webrender_api.delete_image(image_key); + updates.delete_image(image_key); } + webrender_api.update_resources(updates); + let image_data = CanvasImageData { image_key: image_key.unwrap(), }; @@ -357,15 +361,19 @@ impl Drop for WebGLPaintThread { very_old_image_key, .. } = self.data { + let mut updates = webrender_api::ResourceUpdates::new(); + if let Some(image_key) = image_key { - webrender_api.delete_image(image_key); + updates.delete_image(image_key); } if let Some(image_key) = old_image_key { - webrender_api.delete_image(image_key); + updates.delete_image(image_key); } if let Some(image_key) = very_old_image_key { - webrender_api.delete_image(image_key); + updates.delete_image(image_key); } + + webrender_api.update_resources(updates); } } } |