Chore: upgrade deps (#286)

* upgrade deps, fix keywords/categories

* just fmt

* remove backends in wgpu
This commit is contained in:
Yuri Astrakhan 2023-09-24 04:11:29 -04:00 committed by GitHub
parent e3c398b9a9
commit 04ff0882a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 232 additions and 159 deletions

View File

@ -19,9 +19,11 @@ members = [
description = "Maps for Desktop, Mobile and Web"
version = "0.1.0"
edition = "2021"
rust-version = "1.65"
# Keep this in sync with `rust-toolchain.toml` and `justfile`
rust-version = "1.72.1"
license = "MIT OR Apache-2.0"
keywords = ["graphics", "science::geo"]
keywords = ["graphics", "maps", "webgl", "tiles"]
categories = ["graphics", "science::geo"]
authors = ["Maximilian Ammann <max@maxammann.org>"]
[workspace.dependencies]
@ -40,56 +42,56 @@ winit = { version = "0.27.5", default-features = false, features = [] }
#
# These dependencies should be updated to the latest version
#
async-trait = "0.1.68"
bytemuck = "1.13.1"
bytemuck_derive = "1.4.1"
async-trait = "0.1.73"
bytemuck = "1.14.0"
bytemuck_derive = "1.5.0"
cgmath = "0.18.0"
cint = "0.3.1"
clap = { version = "4.3.0", features = ["derive"] }
clap = { version = "4.3.24", features = ["derive"] }
console_error_panic_hook = "0.1.7"
console_log = { version = "1.0.0", features = ["color"] }
criterion = { version = "0.5.1", features = ["async_tokio"] }
csscolorparser = { version = "0.6.2", features = ["serde", "cint"] }
downcast-rs = "1.2.0"
env_logger = "0.10.0"
flatbuffers = "23.1.21"
flatbuffers = "23.5.26"
flatc-rust = "0.2.0"
flate2 = "1.0.26"
geo = "0.25.0"
geo-types = { version = "0.7.9", features = ["use-rstar_0_9"] }
geozero = { version = "0.9.9", default-features = false, features = ["with-mvt", "with-geo"] }
flate2 = "1.0.27"
geo = "0.26.0"
geo-types = { version = "0.7.11", features = ["use-rstar_0_9"] }
geozero = { version = "0.11.0", default-features = false, features = ["with-mvt", "with-geo"] }
image = { version = "0.24", default-features = false, features = ["jpeg", "webp", "png"] }
include_dir = "0.7.3"
instant = { version = "0.1.12", features = ["wasm-bindgen"] } # TODO: Untrusted dependency
jni = "0.21.1"
js-sys = "0.3.63"
log = "0.4.18"
js-sys = "0.3.64"
log = "0.4.20"
lyon = { version = "1.0.1", features = [] }
naga = { version = "0.12.1", features = ["wgsl-in"] }
naga = { version = "0.13.0", features = ["wgsl-in"] }
ndk-glue = "0.7.0" # version is required by winit. This might for winit 0.28+, see https://github.com/rust-windowing/winit#Android
png = { version = "0.17.8" }
png = { version = "0.17.10" }
raw-window-handle = "0.5.2"
reqwest = { version = "0.11.18", default-features = false, features = ["rustls-tls", "gzip"] } # Use rusttls on android because cross compiling is difficult
reqwest = { version = "0.11.20", default-features = false, features = ["rustls-tls", "gzip"] } # Use rusttls on android because cross compiling is difficult
reqwest-middleware-cache = "0.1.1" # FIXME: Untrusted dependency
rstar = "0.10.0"
rstar = "0.11.0"
rusqlite = { version = "0.29.0" }
serde = { version = "1.0.163", features = ["derive"] }
serde_json = "1.0.96"
smallvec = "1.10.0"
thiserror = "1.0.40"
tile-grid = "0.4"
tokio = "1.28.2" # Individual features are customized in each crate
tokio-util = { version = "0.7.8", features = ["rt"] }
serde = { version = "1.0.188", features = ["derive"] }
serde_json = "1.0.107"
smallvec = "1.11.1"
thiserror = "1.0.48"
tile-grid = "0.5"
tokio = "1.32.0" # Individual features are customized in each crate
tokio-util = { version = "0.7.9", features = ["rt"] }
tracing = "0.1.37"
tracing-subscriber = "0.3.17"
tracing-tracy = "0.10"
tracing-wasm = "0.2.1" # TODO: Low quality dependency (remove in a separate PR!)
walkdir = "2.3.3"
walkdir = "2.4.0"
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
wasm-bindgen-test = "0.3"
web-sys = "0.3.63" # Individual features are customized in each crate
wgpu = "0.16.1"
web-sys = "0.3.64" # Individual features are customized in each crate
wgpu = "0.17.0"
[profile.release]
lto = true

View File

@ -8,6 +8,7 @@ edition.workspace = true
rust-version.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true
authors.workspace = true
[dependencies]

View File

@ -34,7 +34,8 @@ cargo {
libname = "maplibre_android"
targetDirectory = "${module}/../target"
profile = "debug"
rustupChannel = "nightly-2023-03-29" // Also change the version in justfile
// This should be in sync with the justfile
rustupChannel = "nightly-2023-09-23"
features {

View File

@ -8,6 +8,7 @@ edition.workspace = true
rust-version.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true
authors.workspace = true
[dependencies]

View File

@ -8,6 +8,7 @@ edition.workspace = true
rust-version.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true
authors.workspace = true
[dependencies]

View File

@ -4,10 +4,12 @@
set shell := ["bash", "-c"]
# Also change the version in android/gradle/lib/build.gradle
# Keep this in sync with `android/gradle/lib/build.gradle`
export NIGHTLY_TOOLCHAIN := "nightly-2023-09-23"
export NIGHTLY_TOOLCHAIN := "nightly-2023-03-29"
export STABLE_TOOLCHAIN := "1.65"
# Keep this in sync with `rust-toolchain.toml` and `Cargo.toml`.
# Make sure the above is newer than this.
export STABLE_TOOLCHAIN := "1.72.1"
export CARGO_TERM_COLOR := "always"
export RUST_BACKTRACE := "1"

View File

@ -8,6 +8,7 @@ edition.workspace = true
rust-version.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true
authors.workspace = true
[features]

View File

@ -8,6 +8,7 @@ edition.workspace = true
rust-version.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true
authors.workspace = true
[features]

View File

@ -7,6 +7,7 @@ edition.workspace = true
rust-version.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true
authors.workspace = true
[target.'cfg(any(target_os = "macos", target_os = "ios", target_os = "linux", target_os = "android", target_os = "windows"))'.dependencies]

View File

@ -9,6 +9,7 @@ edition.workspace = true
rust-version.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true
authors.workspace = true
[features]

View File

@ -3,9 +3,10 @@ use crate::{context::MapContext, debug::TileDebugItem, render::render_phase::Ren
pub fn cleanup_system(MapContext { world, .. }: &mut MapContext) {
let Some(debug_tile_phase) = world
.resources
.query_mut::<
&mut RenderPhase<TileDebugItem>,
>() else { return; };
.query_mut::<&mut RenderPhase<TileDebugItem>>()
else {
return;
};
debug_tile_phase.clear();
}

View File

@ -10,13 +10,12 @@ use crate::{
};
pub fn queue_system(MapContext { world, .. }: &mut MapContext) {
let Some((
Initialized(tile_view_pattern),
tile_debug_phase,
)) = world.resources.query_mut::<(
let Some((Initialized(tile_view_pattern), tile_debug_phase)) = world.resources.query_mut::<(
&mut Eventually<WgpuTileViewPattern>,
&mut RenderPhase<TileDebugItem>,
)>() else { return; };
)>() else {
return;
};
for view_tile in tile_view_pattern.iter() {
let coords = &view_tile.coords();

View File

@ -18,9 +18,9 @@ impl<P: PhaseItem> RenderCommand<P> for SetDebugPipeline {
_item: &P,
pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult {
let Some(Initialized(pipeline)) = world
.resources
.get::<Eventually<DebugPipeline>>() else { return RenderCommandResult::Failure; };
let Some(Initialized(pipeline)) = world.resources.get::<Eventually<DebugPipeline>>() else {
return RenderCommandResult::Failure;
};
pass.set_render_pipeline(pipeline);
RenderCommandResult::Success
@ -34,9 +34,11 @@ impl RenderCommand<TileDebugItem> for DrawDebugOutline {
item: &TileDebugItem,
pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult {
let Some(Initialized(tile_view_pattern)) = world
.resources
.get::<Eventually<WgpuTileViewPattern>>() else { return RenderCommandResult::Failure; };
let Some(Initialized(tile_view_pattern)) =
world.resources.get::<Eventually<WgpuTileViewPattern>>()
else {
return RenderCommandResult::Failure;
};
let source_shape = &item.source_shape;

View File

@ -24,11 +24,12 @@ pub fn resource_system(
..
}: &mut MapContext,
) {
let Some(
debug_pipeline
) = world.resources.query_mut::<
&mut Eventually<DebugPipeline>,
>() else { return; };
let Some(debug_pipeline) = world
.resources
.query_mut::<&mut Eventually<DebugPipeline>>()
else {
return;
};
debug_pipeline.initialize(|| {
let mask_shader = shaders::TileMaskShader {

View File

@ -40,8 +40,11 @@ impl<E: Environment, T: RasterTransferables> System for PopulateWorldSystem<E, T
if message.has_tag(T::LayerRaster::message_tag()) {
let message = message.into_transferable::<T::LayerRaster>();
let Some(component) = world
.tiles
.query_mut::<&mut RasterLayersDataComponent>(message.coords()) else { continue; };
.tiles
.query_mut::<&mut RasterLayersDataComponent>(message.coords())
else {
continue;
};
component
.layers
@ -50,7 +53,10 @@ impl<E: Environment, T: RasterTransferables> System for PopulateWorldSystem<E, T
let message = message.into_transferable::<T::LayerRasterMissing>();
let Some(component) = world
.tiles
.query_mut::<&mut RasterLayersDataComponent>(message.coords()) else { continue; };
.query_mut::<&mut RasterLayersDataComponent>(message.coords())
else {
continue;
};
component
.layers

View File

@ -13,11 +13,12 @@ use crate::{
};
pub fn queue_system(MapContext { world, .. }: &mut MapContext) {
let Some((
Initialized(tile_view_pattern),
)) = world.resources.query::<(
&Eventually<WgpuTileViewPattern>,
)>() else { return; };
let Some((Initialized(tile_view_pattern),)) = world
.resources
.query::<(&Eventually<WgpuTileViewPattern>,)>()
else {
return;
};
let mut items = Vec::new();
@ -49,7 +50,10 @@ pub fn queue_system(MapContext { world, .. }: &mut MapContext) {
let Some((layer_item_phase, tile_mask_phase)) = world
.resources
.query_mut::<(&mut RenderPhase<LayerItem>, &mut RenderPhase<TileMaskItem>,)>() else { return; };
.query_mut::<(&mut RenderPhase<LayerItem>, &mut RenderPhase<TileMaskItem>)>()
else {
return;
};
for (layer, mask) in items {
layer_item_phase.add(layer);

View File

@ -16,9 +16,11 @@ impl<P: PhaseItem> RenderCommand<P> for SetRasterTilePipeline {
_item: &P,
pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult {
let Some(Initialized(raster_resources)) = world
.resources
.get::<Eventually<RasterResources>>() else { return RenderCommandResult::Failure; };
let Some(Initialized(raster_resources)) =
world.resources.get::<Eventually<RasterResources>>()
else {
return RenderCommandResult::Failure;
};
pass.set_render_pipeline(raster_resources.pipeline());
RenderCommandResult::Success
@ -32,12 +34,15 @@ impl<const I: usize> RenderCommand<LayerItem> for SetRasterViewBindGroup<I> {
item: &LayerItem,
pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult {
let Some(Initialized(raster_resources)) = world
.resources
.get::<Eventually<RasterResources>>() else { return RenderCommandResult::Failure; };
let Some(Initialized(raster_resources)) =
world.resources.get::<Eventually<RasterResources>>()
else {
return RenderCommandResult::Failure;
};
let Some(bind_group) = raster_resources
.get_bound_texture(&item.tile.coords) else { return RenderCommandResult::Failure; };
let Some(bind_group) = raster_resources.get_bound_texture(&item.tile.coords) else {
return RenderCommandResult::Failure;
};
pass.set_bind_group(0, bind_group, &[]);
RenderCommandResult::Success
@ -51,9 +56,11 @@ impl RenderCommand<LayerItem> for DrawRasterTile {
item: &LayerItem,
pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult {
let Some(Initialized(tile_view_pattern)) = world
.resources
.get::<Eventually<WgpuTileViewPattern>>() else { return RenderCommandResult::Failure; };
let Some(Initialized(tile_view_pattern)) =
world.resources.get::<Eventually<WgpuTileViewPattern>>()
else {
return RenderCommandResult::Failure;
};
let source_shape = &item.source_shape;

View File

@ -110,8 +110,8 @@ pub fn fetch_raster_apc<
kernel: K,
) -> AsyncProcedureFuture {
Box::pin(async move {
let Input::TileRequest {coords, style} = input else {
return Err(ProcedureError::IncompatibleInput)
let Input::TileRequest { coords, style } = input else {
return Err(ProcedureError::IncompatibleInput);
};
let raster_layers: HashSet<String> = style

View File

@ -27,7 +27,10 @@ pub fn resource_system(
) {
let Some(raster_resources) = world
.resources
.query_mut::<&mut Eventually<RasterResources>>() else { return; };
.query_mut::<&mut Eventually<RasterResources>>()
else {
return;
};
raster_resources.initialize(|| {
let shader = shaders::RasterTileShader {

View File

@ -25,7 +25,10 @@ pub fn upload_system(
) {
let Some(Initialized(raster_resources)) = world
.resources
.query_mut::<&mut Eventually<RasterResources>>() else { return; };
.query_mut::<&mut Eventually<RasterResources>>()
else {
return;
};
let view_region = view_state.create_view_region();
if let Some(view_region) = &view_region {
@ -54,23 +57,24 @@ fn upload_raster_layer(
continue;
}
let Some(raster_layers) =
tiles.query::<&RasterLayersDataComponent>(coords) else { continue; };
let Some(raster_layers) = tiles.query::<&RasterLayersDataComponent>(coords) else {
continue;
};
for style_layer in &style.layers {
let style_source_layer = style_layer.source_layer.as_ref().unwrap(); // FIXME: Remove unwrap
let Some(AvailableRasterLayerData {
coords,
image,
..
}) = raster_layers.layers
let Some(AvailableRasterLayerData { coords, image, .. }) = raster_layers
.layers
.iter()
.flat_map(|data| match data {
RasterLayerData::Available(data) => Some(data),
RasterLayerData::Missing(_) => None,
})
.find(|layer| style_source_layer.as_str() == layer.source_layer) else { continue; };
.find(|layer| style_source_layer.as_str() == layer.source_layer)
else {
continue;
};
let (width, height) = image.dimensions();

View File

@ -465,7 +465,7 @@ mod tests {
backends,
dx12_shader_compiler: Default::default(),
});
let adapter = wgpu::util::initialize_adapter_from_env_or_default(&instance, backends, None)
let adapter = wgpu::util::initialize_adapter_from_env_or_default(&instance, None)
.await
.expect("Unable to initialize adapter");

View File

@ -18,7 +18,9 @@ impl<P: PhaseItem> RenderCommand<P> for SetMaskPipeline {
_item: &P,
pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult {
let Some(Initialized(pipeline)) = world.resources.get::<Eventually<MaskPipeline>>() else { return RenderCommandResult::Failure; };
let Some(Initialized(pipeline)) = world.resources.get::<Eventually<MaskPipeline>>() else {
return RenderCommandResult::Failure;
};
pass.set_render_pipeline(pipeline);
RenderCommandResult::Success
}
@ -31,9 +33,11 @@ impl RenderCommand<TileMaskItem> for DrawMask {
item: &TileMaskItem,
pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult {
let Some(Initialized(tile_view_pattern)) = world
.resources
.get::<Eventually<WgpuTileViewPattern>>() else { return RenderCommandResult::Failure; };
let Some(Initialized(tile_view_pattern)) =
world.resources.get::<Eventually<WgpuTileViewPattern>>()
else {
return RenderCommandResult::Failure;
};
let tile_mask = &item.source_shape;

View File

@ -6,10 +6,10 @@ use crate::{
pub fn cleanup_system(MapContext { world, .. }: &mut MapContext) {
let Some((layer_item_phase, tile_mask_phase)) = world
.resources
.query_mut::<(
&mut RenderPhase<LayerItem>,
&mut RenderPhase<TileMaskItem>,
)>() else { return; };
.query_mut::<(&mut RenderPhase<LayerItem>, &mut RenderPhase<TileMaskItem>)>()
else {
return;
};
layer_item_phase.clear();
tile_mask_phase.clear();

View File

@ -38,13 +38,12 @@ impl System for ResourceSystem {
..
}: &mut MapContext,
) {
let Some((
tile_view_pattern,
mask_pipeline
)) = world.resources.query_mut::<(
let Some((tile_view_pattern, mask_pipeline)) = world.resources.query_mut::<(
&mut Eventually<WgpuTileViewPattern>,
&mut Eventually<MaskPipeline>,
)>() else { return; };
)>() else {
return;
};
let surface = &mut state.surface;

View File

@ -13,13 +13,12 @@ pub fn tile_view_pattern_system(
view_state, world, ..
}: &mut MapContext,
) {
let Some((
Initialized(tile_view_pattern),
view_tile_sources,
)) = world.resources.query::<(
&Eventually<WgpuTileViewPattern>,
&ViewTileSources
)>() else { return; };
let Some((Initialized(tile_view_pattern), view_tile_sources)) = world
.resources
.query::<(&Eventually<WgpuTileViewPattern>, &ViewTileSources)>()
else {
return;
};
let view_region = view_state.create_view_region();
if let Some(view_region) = &view_region {
@ -31,7 +30,10 @@ pub fn tile_view_pattern_system(
// TODO: Can we &mut borrow initially somehow instead of here?
let Some(Initialized(tile_view_pattern)) = world
.resources
.query_mut::<&mut Eventually<WgpuTileViewPattern>>() else { return; };
.query_mut::<&mut Eventually<WgpuTileViewPattern>>()
else {
return;
};
tile_view_pattern.update_pattern(view_tiles);
}

View File

@ -16,11 +16,12 @@ pub fn upload_system(
..
}: &mut MapContext,
) {
let Some(
Initialized(tile_view_pattern)
) = world.resources.query_mut::<
&mut Eventually<WgpuTileViewPattern>
>() else { return; };
let Some(Initialized(tile_view_pattern)) = world
.resources
.query_mut::<&mut Eventually<WgpuTileViewPattern>>()
else {
return;
};
let view_proj = view_state.view_projection();
tile_view_pattern.upload_pattern(queue, &view_proj);

View File

@ -71,9 +71,10 @@ struct VectorTilesDone;
impl HasTile for VectorTilesDone {
fn has_tile(&self, coords: WorldTileCoords, world: &World) -> bool {
let Some(vector_layers_indices) = world
.tiles
.query::<&VectorLayersDataComponent>(coords) else { return false; };
let Some(vector_layers_indices) = world.tiles.query::<&VectorLayersDataComponent>(coords)
else {
return false;
};
vector_layers_indices.done
}

View File

@ -39,15 +39,21 @@ impl<E: Environment, T: VectorTransferables> System for PopulateWorldSystem<E, T
if message.has_tag(T::TileTessellated::message_tag()) {
let message = message.into_transferable::<T::TileTessellated>();
let Some(component) = world
.tiles
.query_mut::<&mut VectorLayersDataComponent>(message.coords()) else { continue; };
.tiles
.query_mut::<&mut VectorLayersDataComponent>(message.coords())
else {
continue;
};
component.done = true;
} else if message.has_tag(T::LayerMissing::message_tag()) {
let message = message.into_transferable::<T::LayerMissing>();
let Some(component) = world
.tiles
.query_mut::<&mut VectorLayersDataComponent>(message.coords()) else { continue; };
.tiles
.query_mut::<&mut VectorLayersDataComponent>(message.coords())
else {
continue;
};
component
.layers
@ -60,8 +66,11 @@ impl<E: Environment, T: VectorTransferables> System for PopulateWorldSystem<E, T
}*/
let Some(component) = world
.tiles
.query_mut::<&mut VectorLayersDataComponent>(message.coords()) else { continue; };
.tiles
.query_mut::<&mut VectorLayersDataComponent>(message.coords())
else {
continue;
};
component
.layers

View File

@ -16,13 +16,16 @@ pub fn queue_system(MapContext { world, .. }: &mut MapContext) {
Initialized(tile_view_pattern),
Initialized(buffer_pool),
mask_phase,
layer_item_phase
layer_item_phase,
)) = world.resources.query_mut::<(
&mut Eventually<WgpuTileViewPattern>,
&mut Eventually<VectorBufferPool>,
&mut RenderPhase<TileMaskItem>,
&mut RenderPhase<LayerItem>,
)>() else { return; };
)>()
else {
return;
};
let buffer_pool_index = buffer_pool.index();

View File

@ -19,9 +19,10 @@ impl<P: PhaseItem> RenderCommand<P> for SetVectorTilePipeline {
_item: &P,
pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult {
let Some(Initialized(pipeline)) = world
.resources
.get::<Eventually<VectorPipeline>>() else { return RenderCommandResult::Failure; };
let Some(Initialized(pipeline)) = world.resources.get::<Eventually<VectorPipeline>>()
else {
return RenderCommandResult::Failure;
};
pass.set_render_pipeline(pipeline);
RenderCommandResult::Success
@ -35,19 +36,25 @@ impl RenderCommand<LayerItem> for DrawVectorTile {
item: &LayerItem,
pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult {
let Some((
Initialized(buffer_pool),
Initialized(tile_view_pattern),
)) = world.resources.query::<(
&Eventually<VectorBufferPool>,
&Eventually<WgpuTileViewPattern>
)>() else { return RenderCommandResult::Failure; };
let Some((Initialized(buffer_pool), Initialized(tile_view_pattern))) =
world.resources.query::<(
&Eventually<VectorBufferPool>,
&Eventually<WgpuTileViewPattern>,
)>()
else {
return RenderCommandResult::Failure;
};
let Some(vector_layers) = buffer_pool.index().get_layers(item.tile.coords) else { return RenderCommandResult::Failure; };
let Some(vector_layers) = buffer_pool.index().get_layers(item.tile.coords) else {
return RenderCommandResult::Failure;
};
let Some(entry) = vector_layers
.iter()
.find(|entry| entry.style_layer.id == item.style_layer) else { return RenderCommandResult::Failure; };
.find(|entry| entry.style_layer.id == item.style_layer)
else {
return RenderCommandResult::Failure;
};
let source_shape = &item.source_shape;

View File

@ -111,8 +111,8 @@ pub fn fetch_vector_apc<
kernel: K,
) -> AsyncProcedureFuture {
Box::pin(async move {
let Input::TileRequest {coords, style} = input else {
return Err(ProcedureError::IncompatibleInput)
let Input::TileRequest { coords, style } = input else {
return Err(ProcedureError::IncompatibleInput);
};
let fill_layers: HashSet<String> = style

View File

@ -24,13 +24,12 @@ pub fn resource_system(
..
}: &mut MapContext,
) {
let Some((
buffer_pool,
vector_pipeline
)) = world.resources.query_mut::<(
let Some((buffer_pool, vector_pipeline)) = world.resources.query_mut::<(
&mut Eventually<VectorBufferPool>,
&mut Eventually<VectorPipeline>
)>() else { return; };
&mut Eventually<VectorPipeline>,
)>() else {
return;
};
buffer_pool.initialize(|| BufferPool::from_device(device));

View File

@ -26,11 +26,12 @@ pub fn upload_system(
..
}: &mut MapContext,
) {
let Some(
Initialized(buffer_pool)
) = world.resources.query_mut::<
&mut Eventually<VectorBufferPool>,
>() else { return; };
let Some(Initialized(buffer_pool)) = world
.resources
.query_mut::<&mut Eventually<VectorBufferPool>>()
else {
return;
};
let view_region = view_state.create_view_region();
@ -128,7 +129,9 @@ fn upload_tesselated_layer(
) {
// Upload all tessellated layers which are in view
for coords in view_region.iter() {
let Some(vector_layers) = tiles.query_mut::<&VectorLayersDataComponent>(coords) else { continue; };
let Some(vector_layers) = tiles.query_mut::<&VectorLayersDataComponent>(coords) else {
continue;
};
let loaded_layers = buffer_pool
.get_loaded_source_layers_at(coords)
@ -148,13 +151,16 @@ fn upload_tesselated_layer(
let source_layer = style_layer.source_layer.as_ref().unwrap(); // TODO: Unwrap
let Some(AvailableVectorLayerData {
coords,
feature_indices,
buffer,
..
}) = available_layers
coords,
feature_indices,
buffer,
..
}) = available_layers
.iter()
.find(|layer| source_layer.as_str() == layer.source_layer) else { continue; };
.find(|layer| source_layer.as_str() == layer.source_layer)
else {
continue;
};
let color: Option<Vec4f32> = style_layer
.paint

View File

@ -3,4 +3,6 @@
# The CI might use it though to build other Rust binaries, required for building maplibre-rs.
# This file is here to give IDEs a hint about which Rust version to use.
# The version is set here instead of using stable, so we can make sure that a predictable version is used.
channel = "1.68"
#
# Keep this in sync with `justfile` and `Cargo.toml`
channel = "1.72.1"

View File

@ -9,6 +9,7 @@ edition.workspace = true
rust-version.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true
authors.workspace = true
[features]

View File

@ -28,15 +28,15 @@ pub enum WebError {
impl From<JsValue> for WebError {
fn from(value: JsValue) -> Self {
if let Some(error) = value.dyn_ref::<TypeError>() {
let Some(message) = error
.message()
.as_string() else { return WebError::InvalidMessage; };
let Some(message) = error.message().as_string() else {
return WebError::InvalidMessage;
};
WebError::TypeError(message.into())
} else if let Some(error) = value.dyn_ref::<js_sys::Error>() {
let Some(message) = error
.message()
.as_string() else { return WebError::InvalidMessage; };
let Some(message) = error.message().as_string() else {
return WebError::InvalidMessage;
};
WebError::GenericError(message.into())
} else {