input: Split out InputEventJava
into Motion
and Key
with Deref
#503
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #502
When I implemented the
from_java()
constructors forMotionEvent
andKeyEvent
in #456, I used a singleInputEventJava
wrapper since that could wrap the existingenum InputEvent
and only need a single destructor callingAInputEvent_release()
(which must only be called when the input event was created from Java).This however requires existing callers to
MotionEvent::from_java()
andKeyEvent::from_java()
to unwrap/unpack that nestedenum InputEvent
again in order to get access to the underlying native methods, despite already calling a specific constructor method (since Android makes a distinction between both types).Not that that is even reachable, since the nested
InputEvent
member was private and there was noDeref
into&InputEvent
anywhere making it impossible to use this API in any meaningful way.Solve both issues by splitting the
struct
into aMotion
andKey
variant, and implementDeref
on both to their respective type. No wrapperInputEventJava
remains since there does not appear to be any reason to pass both of these types into a single API.