Do not block the main thread

This commit is contained in:
Maximilian Ammann 2022-01-21 16:06:09 +01:00
parent 8b1766c843
commit be9bb136eb
3 changed files with 8 additions and 7 deletions

View File

@ -8,7 +8,7 @@ pub fn fetch_munich_tiles(worker_loop: &mut WorkerLoop) {
// This size matches the amount of tiles which are loaded on zoom 15 on FHD
for x in 0..8 {
for y in 0..5 {
worker_loop.fetch((MUNICH_X + x, MUNICH_Y + y, MUNICH_Z).into())
worker_loop.try_fetch((MUNICH_X + x, MUNICH_Y + y, MUNICH_Z).into())
}
}
}

View File

@ -42,15 +42,16 @@ impl WorkerLoop {
}
}
pub fn is_loaded(&self, coords: &TileCoords) -> bool {
if let Ok(loaded_coords) = self.loaded_coords.lock() {
pub fn try_is_loaded(&self, coords: &TileCoords) -> bool {
if let Ok(loaded_coords) = self.loaded_coords.try_lock() {
loaded_coords.contains(coords)
} else {
false
}
}
pub fn fetch(&mut self, coords: TileCoords) {
if let Ok(mut loaded_coords) = self.loaded_coords.lock() {
pub fn try_fetch(&mut self, coords: TileCoords) {
if let Ok(mut loaded_coords) = self.loaded_coords.try_lock() {
if loaded_coords.contains(&coords) {
return;
}

View File

@ -363,9 +363,9 @@ impl RenderState {
for x in min_tile.x..max_tile.x + 1 {
for y in min_tile.y..max_tile.y + 1 {
let to_be_fetched = (x, y, 15).into();
if !worker_loop.is_loaded(&to_be_fetched) {
if !worker_loop.try_is_loaded(&to_be_fetched) {
// FIXME: is_loaded is not correct right now
worker_loop.fetch(to_be_fetched);
worker_loop.try_fetch(to_be_fetched);
}
}
}