Skip to content

Apple M1 MacBook Pro: winit bump #483

@lancelet

Description

@lancelet

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions