Update WR.

* CPU text run optimizations.
* Linux subpixel positioning / rasterization.
* Update debug flags API.
* Update to resource transactions API.
This commit is contained in:
Glenn Watson 2017-08-08 07:51:30 +10:00
parent 689dadc751
commit f6a9f15fed
9 changed files with 74 additions and 48 deletions

View file

@ -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);
}
}