-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
input: Replace open-coded types with ndk::event
definitions
#163
base: main
Are you sure you want to change the base?
Conversation
eff359e
to
3c4be9f
Compare
Will rebase this as soon as #164 is in! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for looking at this, I think in general this seems reasonable to do at this point.
Originally, a notable part of the purpose for these types was just to provide types that could be shared between the GameActivity
and NativeActivity
backend.
There have repeatedly been issues with directly exposing ndk
input types in the android-activity API due to differences between GameActivity
and NativeActivity
and so I've generally been cautious about going back to exposing them. E.g. for a while the Winit Android backend wouldn't work with the game-activity backend because of stuff like this: https://github.com/rust-windowing/winit/blob/918430979f8219648daade44796c00893e42fdd8/src/platform_impl/android/mod.rs#L404
Since the input API is so central to the android-activity
crate then in the past it's also been convenient to not be too tightly coupled to the ndk
crate here, so I could make input API changes without being blocked on there being a new ndk
release.
Maybe if there are some missing variants it's a good time to look at using shared types from the ndk
crate if they can now be shared across both backends.
I think the main thing that seems to be missing atm are some CHANGELOG notes about the breaking changes. For completeness that should probably include a note about the repr
changes
3c4be9f
to
2f72d77
Compare
We discussed this before, and as highlighted in this PR that those compatibility issues weren't brought up "upstream" at the
We've since fixed that, which is specifically why this PR is open now so I don't think it's fair to dredge that back up.
Again, there are little to no differences at this time. I'm keeping the
That's exactly what this PR did :)
Fixed. |
2f72d77
to
8bf3a7b
Compare
As documented in
// XXX
comments, and discussed before, the copy-pastedinput
types exist because thendk
crate "wasn't set up" to allow changes toenum
s in a non-semver-breaking way (in particular, they were not marked#[non_exhaustive]
). This issue was not reported upstream, and it took me to useandroid-activity
before realizing so and fixing it in rust-mobile/ndk#459. Also, after comparing the copy-paste here against thendk
types, no new variants were ever added, completely defeating the purpose (even though new types were added to the ustream headers and will be added to tendk
crate).Hence, remove all the open-coded types again and reexport them from the
ndk
crate. Upstream not only made allenum
s#[non_exhaustive]
, but also fixes therepr
types to not use theu32
default for untyped enum constants, but in most casesi32
when all function signatures take a signed argument.