aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/canvas_paint_thread.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/canvas/canvas_paint_thread.rs')
-rw-r--r--components/canvas/canvas_paint_thread.rs30
1 files changed, 19 insertions, 11 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);
}
}