Skip to content

Commit 4915b1a

Browse files
committed
fix macos tests
1 parent 812e606 commit 4915b1a

3 files changed

Lines changed: 21 additions & 22 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ jobs:
106106
# macOS ARM
107107
- runs-on: macos-latest
108108
backend: metal
109-
precompiled: 1
110-
amalgam: 1
109+
precompiled: 0
110+
amalgam: 0
111111
- runs-on: macos-latest
112112
backend: vulkan
113113
precompiled: 0

build.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ const MLN_COMMIT: &str = "35cf39b72f45cfea55a34ffe7358ade5c950a3c5";
3535
const BRIDGE_RS: &str = "src/bridge.rs";
3636
const BRIDGE_CPP_DIR: &str = "src/cpp";
3737

38-
const BRIDGE_INCLUDE_DIRS: &[&str] = &["include", "src/cpp"];
38+
const BRIDGE_INCLUDE_DIRS: &[&str] = &["src/cpp"];
39+
40+
const PRECOMPILED_VENDORED_INCLUDE_DIR: &str = "include";
3941

4042
/// Supported graphics rendering APIs.
4143
#[derive(PartialEq, Eq, Clone, Copy, Debug)]
@@ -317,7 +319,12 @@ struct Info {
317319
}
318320

319321
fn bundle_precompiled() -> Info {
320-
let (cpp_root, include_dirs) = resolve_mln_core();
322+
let (cpp_root, mut include_dirs) = resolve_mln_core();
323+
324+
// The precompiled headers tarball omits `platform/default/` headers
325+
// (e.g. `mbgl/gfx/headless_frontend.hpp`), so add vendored fallbacks.
326+
let root = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
327+
include_dirs.push(root.join(PRECOMPILED_VENDORED_INCLUDE_DIR));
321328

322329
println!(
323330
"cargo:warning=Using precompiled maplibre-native static library from {}",

tests/image_renderer.rs

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,10 @@ fn multiple_renderers_render_on_single_thread() {
8888
let second_request =
8989
second.submit_render_static(&test_camera()).expect("second render should submit");
9090

91-
// Both requests are driven from the same thread-local run loop.
92-
tick_until_ready(|| first_request.is_ready() && second_request.is_ready());
93-
94-
let first_image = first_request.finish().expect("first renderer should render");
95-
let second_image = second_request.finish().expect("second renderer should render");
91+
// Both requests are already submitted before waiting, so they are driven
92+
// from the same thread-local run loop.
93+
let first_image = first_request.wait().expect("first renderer should render");
94+
let second_image = second_request.wait().expect("second renderer should render");
9695

9796
assert_eq!(first_image.as_image().width(), 128);
9897
assert_eq!(first_image.as_image().height(), 128);
@@ -108,9 +107,8 @@ fn load_style_from_json_str_renders() {
108107

109108
let request =
110109
renderer.submit_render_static(&test_camera()).expect("JSON style render should submit");
111-
tick_until_ready(|| request.is_ready());
112110

113-
let image = request.finish().expect("JSON style should render");
111+
let image = request.wait().expect("JSON style should render");
114112
assert_eq!(image.as_image().width(), 128);
115113
assert_eq!(image.as_image().height(), 128);
116114
}
@@ -150,9 +148,7 @@ fn tile_render_request_renders() {
150148

151149
let request = renderer.submit_render_tile(0, 0, 0).expect("tile render should submit");
152150

153-
tick_until_ready(|| request.is_ready());
154-
155-
let image = request.finish().expect("tile renderer should render");
151+
let image = request.wait().expect("tile renderer should render");
156152
assert_eq!(image.as_image().width(), 128);
157153
assert_eq!(image.as_image().height(), 128);
158154
}
@@ -171,9 +167,8 @@ fn camera_for_bounds_renders() {
171167
};
172168
let camera = renderer.camera_for_bounds(bounds, Some(EdgeInsets::all(8.0)), 0.0, 0.0);
173169
let request = renderer.submit_render_static(&camera).expect("bounds-fit render should submit");
174-
tick_until_ready(|| request.is_ready());
175170

176-
let image = request.finish().expect("bounds-fit renderer should render");
171+
let image = request.wait().expect("bounds-fit renderer should render");
177172
assert_eq!(image.as_image().width(), 128);
178173
assert_eq!(image.as_image().height(), 128);
179174
}
@@ -197,9 +192,8 @@ fn camera_for_lat_lngs_renders() {
197192
.expect("non-empty coordinates should produce a camera");
198193
let request =
199194
renderer.submit_render_static(&camera).expect("coordinates-fit render should submit");
200-
tick_until_ready(|| request.is_ready());
201195

202-
let image = request.finish().expect("coordinates-fit renderer should render");
196+
let image = request.wait().expect("coordinates-fit renderer should render");
203197
assert_eq!(image.as_image().width(), 128);
204198
assert_eq!(image.as_image().height(), 128);
205199
}
@@ -234,9 +228,8 @@ fn camera_for_geojson_renders() {
234228
.expect("non-empty geometry should produce a camera");
235229
let request =
236230
renderer.submit_render_static(&camera).expect("geometry-fit render should submit");
237-
tick_until_ready(|| request.is_ready());
238231

239-
let image = request.finish().expect("geometry-fit renderer should render");
232+
let image = request.wait().expect("geometry-fit renderer should render");
240233
assert_eq!(image.as_image().width(), 128);
241234
assert_eq!(image.as_image().height(), 128);
242235
}
@@ -282,8 +275,7 @@ fn camera_for_geojson_matches_bounds() {
282275

283276
let render = |renderer: &mut ImageRenderer<Static>, camera: &CameraUpdate| {
284277
let request = renderer.submit_render_static(camera).expect("render should submit");
285-
tick_until_ready(|| request.is_ready());
286-
request.finish().expect("render should succeed").as_image().clone()
278+
request.wait().expect("render should succeed").as_image().clone()
287279
};
288280

289281
let geo_camera = renderer

0 commit comments

Comments
 (0)