mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Change quadtree iterators
This commit is contained in:
parent
d92cbe6a51
commit
594246891d
2 changed files with 18 additions and 19 deletions
|
@ -24,7 +24,6 @@ use extra::arc::Arc;
|
||||||
use servo_util::time::{ProfilerChan, profile};
|
use servo_util::time::{ProfilerChan, profile};
|
||||||
use servo_util::time;
|
use servo_util::time;
|
||||||
|
|
||||||
use extra::arc;
|
|
||||||
use buffer_map::BufferMap;
|
use buffer_map::BufferMap;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -310,7 +310,7 @@ impl<T: Tile> QuadtreeNode<T> {
|
||||||
status: Normal,
|
status: Normal,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Determine which child contains a given point in page coords.
|
/// Determine which child contains a given point in page coords.
|
||||||
fn get_quadrant(&self, x: f32, y: f32) -> Quadrant {
|
fn get_quadrant(&self, x: f32, y: f32) -> Quadrant {
|
||||||
if x < self.origin.x + self.size / 2.0 {
|
if x < self.origin.x + self.size / 2.0 {
|
||||||
|
@ -379,14 +379,14 @@ impl<T: Tile> QuadtreeNode<T> {
|
||||||
Some(old_tile) => ~[old_tile],
|
Some(old_tile) => ~[old_tile],
|
||||||
None => ~[],
|
None => ~[],
|
||||||
};
|
};
|
||||||
// FIXME: This should be inline, but currently won't compile
|
for child in self.quadrants.mut_iter() {
|
||||||
let quads = [TL, TR, BL, BR];
|
match *child {
|
||||||
for &quad in quads.iter() {
|
Some(ref mut node) => {
|
||||||
match self.quadrants[quad as int] {
|
unused_tiles.push_all_move(node.collect_tiles());
|
||||||
Some(ref mut child) => unused_tiles.push_all_move(child.collect_tiles()),
|
}
|
||||||
None => {} // Nothing to do
|
None => {} // Nothing to do
|
||||||
}
|
}
|
||||||
self.quadrants[quad as int] = None;
|
*child = None;
|
||||||
}
|
}
|
||||||
self.status = Normal;
|
self.status = Normal;
|
||||||
(self.tile_mem as int - old_size as int, unused_tiles)
|
(self.tile_mem as int - old_size as int, unused_tiles)
|
||||||
|
@ -569,14 +569,14 @@ impl<T: Tile> QuadtreeNode<T> {
|
||||||
let mut unused_tiles = ~[];
|
let mut unused_tiles = ~[];
|
||||||
if redisplay {
|
if redisplay {
|
||||||
let old_mem = self.tile_mem;
|
let old_mem = self.tile_mem;
|
||||||
// FIXME: This should be inline, but currently won't compile
|
for child in self.quadrants.mut_iter() {
|
||||||
let quads = [TL, TR, BL, BR];
|
match *child {
|
||||||
for &quad in quads.iter() {
|
Some(ref mut node) => {
|
||||||
match self.quadrants[quad as int] {
|
unused_tiles.push_all_move(node.collect_tiles());
|
||||||
Some(ref mut child) => unused_tiles.push_all_move(child.collect_tiles()),
|
}
|
||||||
None => {} // Nothing to do
|
None => {} // Nothing to do
|
||||||
}
|
}
|
||||||
self.quadrants[quad as int] = None;
|
*child = None;
|
||||||
}
|
}
|
||||||
self.tile_mem = tile.get_mem();
|
self.tile_mem = tile.get_mem();
|
||||||
delta = self.tile_mem as int - old_mem as int;
|
delta = self.tile_mem as int - old_mem as int;
|
||||||
|
@ -679,11 +679,11 @@ impl<T: Tile> QuadtreeNode<T> {
|
||||||
Some(tile) => ~[tile],
|
Some(tile) => ~[tile],
|
||||||
None => ~[],
|
None => ~[],
|
||||||
};
|
};
|
||||||
|
for child in self.quadrants.mut_iter() {
|
||||||
let quadrants = [TL, TR, BL, BR];
|
match *child {
|
||||||
for &quad in quadrants.iter() {
|
Some(ref mut node) => {
|
||||||
match self.quadrants[quad as int] {
|
ret.push_all_move(node.collect_tiles());
|
||||||
Some(ref mut child) => ret.push_all_move(child.collect_tiles()),
|
}
|
||||||
None => {} // Nothing to do
|
None => {} // Nothing to do
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue