mirror of
https://github.com/maplibre/maplibre-rs.git
synced 2025-12-08 19:05:57 +00:00
Do not block the main thread
This commit is contained in:
parent
8b1766c843
commit
be9bb136eb
@ -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
|
// This size matches the amount of tiles which are loaded on zoom 15 on FHD
|
||||||
for x in 0..8 {
|
for x in 0..8 {
|
||||||
for y in 0..5 {
|
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())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,15 +42,16 @@ impl WorkerLoop {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_loaded(&self, coords: &TileCoords) -> bool {
|
pub fn try_is_loaded(&self, coords: &TileCoords) -> bool {
|
||||||
if let Ok(loaded_coords) = self.loaded_coords.lock() {
|
if let Ok(loaded_coords) = self.loaded_coords.try_lock() {
|
||||||
loaded_coords.contains(coords)
|
loaded_coords.contains(coords)
|
||||||
} else {
|
} else {
|
||||||
false
|
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) {
|
if loaded_coords.contains(&coords) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -363,9 +363,9 @@ impl RenderState {
|
|||||||
for x in min_tile.x..max_tile.x + 1 {
|
for x in min_tile.x..max_tile.x + 1 {
|
||||||
for y in min_tile.y..max_tile.y + 1 {
|
for y in min_tile.y..max_tile.y + 1 {
|
||||||
let to_be_fetched = (x, y, 15).into();
|
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
|
// FIXME: is_loaded is not correct right now
|
||||||
worker_loop.fetch(to_be_fetched);
|
worker_loop.try_fetch(to_be_fetched);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user