Optimize tile request starting

This commit is contained in:
Maximilian Ammann 2022-03-25 18:49:52 +01:00
parent 67109d8827
commit ae618da5b1
2 changed files with 19 additions and 5 deletions

View File

@ -219,11 +219,7 @@ impl IOScheduler {
) -> Result<(), SendError<TileRequest>> {
let TileRequest { coords, layers } = &tile_request;
let mut missing_layers = layers.clone();
self.tile_cache
.retain_missing_layer_names(coords, &mut missing_layers);
if missing_layers.is_empty() {
if !self.tile_cache.is_layers_missing(coords, layers) {
return Ok(());
}

View File

@ -56,4 +56,22 @@ impl TileCache {
layers.retain(|layer| !tessellated_set.contains(layer));
}
}
pub fn is_layers_missing(&self, coords: &WorldTileCoords, layers: &HashSet<String>) -> bool {
if let Some(results) = self.index.get(coords) {
let tessellated_set: HashSet<&str> = results
.iter()
.map(|tessellated_layer| tessellated_layer.layer_name())
.collect();
for layer in layers {
if !tessellated_set.contains(layer.as_str()) {
return true;
}
}
return false;
}
true
}
}