-
Notifications
You must be signed in to change notification settings - Fork 225
Description
On an Apple M1 MacBook Pro, the winit
dependency build fails with:
Compiling winit v0.19.3
error[E0308]: mismatched types
--> /Users/jsm/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.19.3/src/platform/macos/view.rs:209:9
|
205 | extern fn has_marked_text(this: &Object, _sel: Sel) -> BOOL {
| ---- expected `bool` because of return type
...
209 | (marked_text.length() > 0) as i8
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `bool`, found `i8`
error[E0308]: mismatched types
--> /Users/jsm/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.19.3/src/platform/macos/window.rs:102:26
|
102 | is_zoomed != 0
| ^ expected `bool`, found integer
error[E0308]: mismatched types
--> /Users/jsm/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.19.3/src/platform/macos/window.rs:174:57
|
174 | self.window.setFrame_display_(new_rect, 0);
| ^ expected `bool`, found integer
error[E0308]: mismatched types
--> /Users/jsm/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.19.3/src/platform/macos/window.rs:1290:48
|
1290 | window.setFrame_display_(current_rect, 0)
| ^ expected `bool`, found integer
error[E0308]: mismatched types
--> /Users/jsm/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.19.3/src/platform/macos/window.rs:1297:48
|
1297 | window.setFrame_display_(current_rect, 0)
| ^ expected `bool`, found integer
error[E0308]: mismatched types
--> /Users/jsm/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.19.3/src/platform/macos/window.rs:1314:48
|
1314 | window.setFrame_display_(current_rect, 0)
| ^ expected `bool`, found integer
error[E0308]: mismatched types
--> /Users/jsm/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.19.3/src/platform/macos/window.rs:1321:48
|
1321 | window.setFrame_display_(current_rect, 0)
| ^ expected `bool`, found integer
This is fixed in winit v0.24.x
(see rust-windowing/winit#1782 where this was reported originally).
So, I bumped winit
and made a bunch of changes to catch up with its more recent API. After that, I was able to run some of the examples on an M1 Mac (eg. canvas_minimal
is working). See this diff for the changes required to canvas_minimal/src/main.rs
: lancelet@720785e#diff-53ffc830c4d0e3773cb67c3cedd3e24330ba22eccc7ccb66f731b9586fdf6584
However, there's a circular dependency between both pdf
and pathfinder
, which is making it difficult for me to complete the refactoring within pathfinder itself. pdf
and pdf_render
bring in a dependency on winit
, and use a part of the pathfinder API that has been made private:
error[E0599]: no method named `points` found for reference `&Contour` in the current scope
--> /Users/jsm/.cargo/git/checkouts/pdf_render-56211f49c16f7190/a57d54f/render/src/graphicsstate.rs:83:50
|
83 | let clip_polygon = outer_contour.points();
| ^^^^^^ private field, not a method
To make things worse, pdf
and pdf_render
seem to be using patches on top of pathfinder, so that confuses the matter still further.
I don't know what the best way forward is. If pdf
depends on pathfinder
, perhaps it's best not to use pdf
examples in pathfinder
itself, but rather put appropriate examples in the pdf
package instead? (Or in a third party repository which coordinates a minimum bound on the two?) Any suggestions? If I raised a PR to remove pdf
and pdf_render
as dependencies for all of pathfinder (ie. removing those examples), would that be accepted?