Skip to content
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

Analog button values from 0.0 to 1.0 #133

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion include/wpe/gamepad.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ struct wpe_gamepad_client_interface {
void (*axis_changed)(void*, enum wpe_gamepad_axis, double);

/*< private >*/
void (*_wpe_reserved1)(void);
void (*analog_button_changed)(void*, enum wpe_gamepad_button, double);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move analog_button_changed to line 143, right below axis_changed, and renumber the _wpe_reservedX so they start with 1.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it would be possible to reuse button_changed for both kinds of buttons value, using double instead of boolean, without breaking the back compatibility.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, we cannot change the types of parameters or the number of parameters, because that would break both the ABI and the API. Adding a new function is fine, as done in this patch.

void (*_wpe_reserved2)(void);
void (*_wpe_reserved3)(void);
};
Expand Down Expand Up @@ -358,6 +358,20 @@ void wpe_gamepad_set_client(struct wpe_gamepad*, const struct wpe_gamepad_client
WPE_EXPORT
const char* wpe_gamepad_get_id(struct wpe_gamepad*);

/**
* wpe_gamepad_dispatch_analog_button_changed:
* @gamepad: opaque gamepad object.
* @button: the analog button that changed its value.
* @value: the new analog @button value.
*
* Method called by application (gamepad implementator). It reports to
* WPEWebkit a change in the value of analog @button.
*
* Since: 1.15
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Version 1.15 will be a development one, the first stable version to include this will be 1.16.0 so it's better to write 1.16 here.

*/
WPE_EXPORT
void wpe_gamepad_dispatch_analog_button_changed(struct wpe_gamepad*, enum wpe_gamepad_button, double);

/**
* wpe_gamepad_dispatch_button_changed:
* @gamepad: opaque gamepad object.
Expand Down
7 changes: 7 additions & 0 deletions src/gamepad.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,13 @@ wpe_gamepad_get_id(struct wpe_gamepad* gamepad)
return "Unknown device";
}

void
wpe_gamepad_dispatch_analog_button_changed(struct wpe_gamepad* gamepad, enum wpe_gamepad_button button, double value)
{
if (gamepad && gamepad->client_interface && gamepad->client_interface->analog_button_changed)
gamepad->client_interface->analog_button_changed(gamepad->client_data, button, value);
}

void
wpe_gamepad_dispatch_button_changed(struct wpe_gamepad* gamepad, enum wpe_gamepad_button button, bool pressed)
{
Expand Down
Loading