From f9b5d377833cb80e13205d101db5a40faade7775 Mon Sep 17 00:00:00 2001 From: Nicolas Silva Date: Tue, 19 Feb 2019 18:39:06 +0100 Subject: [PATCH] Bug 1476368 - Avoid moving picture primitives when destroying them. r=gw --HG-- extra : source : 88f409bc495a135764d75ac22802c2fca94d7be3 extra : histedit_source : fa57c05c5227b676ba5f7c582c00b6d1511d89be --- gfx/wr/webrender/src/picture.rs | 6 ++---- gfx/wr/webrender/src/prim_store/mod.rs | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/gfx/wr/webrender/src/picture.rs b/gfx/wr/webrender/src/picture.rs index f8361c838459..509772dde4db 100644 --- a/gfx/wr/webrender/src/picture.rs +++ b/gfx/wr/webrender/src/picture.rs @@ -2266,7 +2266,7 @@ impl PicturePrimitive { /// gives a picture a chance to retain any cached tiles that /// may be useful during the next scene build. pub fn destroy( - mut self, + &mut self, retained_tiles: &mut RetainedTiles, clip_scroll_tree: &ClipScrollTree, ) { @@ -2279,9 +2279,7 @@ impl PicturePrimitive { clip_scroll_tree, ); - for tile in tile_cache.tiles { - retained_tiles.tiles.push(tile); - } + retained_tiles.tiles.extend(tile_cache.tiles); } } diff --git a/gfx/wr/webrender/src/prim_store/mod.rs b/gfx/wr/webrender/src/prim_store/mod.rs index 2364dd783401..e601adfffc8c 100644 --- a/gfx/wr/webrender/src/prim_store/mod.rs +++ b/gfx/wr/webrender/src/prim_store/mod.rs @@ -1700,11 +1700,11 @@ impl PrimitiveStore { /// Destroy an existing primitive store. This is called just before /// a primitive store is replaced with a newly built scene. pub fn destroy( - self, + mut self, retained_tiles: &mut RetainedTiles, clip_scroll_tree: &ClipScrollTree, ) { - for pic in self.pictures { + for pic in &mut self.pictures { pic.destroy( retained_tiles, clip_scroll_tree,