[mutter/wip/carlosg/input-thread: 74/90] backends: Forward event axes as array of ClutterInputAxes elements
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/carlosg/input-thread: 74/90] backends: Forward event axes as array of ClutterInputAxes elements
- Date: Mon, 23 Nov 2020 16:22:04 +0000 (UTC)
commit bfc9264dbf34e5796b29dd6107fe7f7e49943f8a
Author: Carlos Garnacho <carlosg gnome org>
Date: Thu Nov 19 01:00:42 2020 +0100
backends: Forward event axes as array of ClutterInputAxes elements
Instead of encoding arrays in ways that we need the ClutterInputDevice
to decode them, use ClutterInputAxes as the array index.
clutter/clutter/clutter-event.c | 28 +++++----------------------
src/backends/native/meta-seat-impl.c | 30 +++++++++++------------------
src/backends/x11/meta-seat-x11.c | 9 ++++-----
src/wayland/meta-wayland-tablet-tool.c | 35 ++++++----------------------------
4 files changed, 26 insertions(+), 76 deletions(-)
---
diff --git a/clutter/clutter/clutter-event.c b/clutter/clutter/clutter-event.c
index cc8741221b..dba5d2588d 100644
--- a/clutter/clutter/clutter-event.c
+++ b/clutter/clutter/clutter-event.c
@@ -1302,9 +1302,7 @@ clutter_event_copy (const ClutterEvent *event)
{
ClutterEvent *new_event;
ClutterEventPrivate *new_real_event;
- ClutterInputDevice *device;
ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
- gint n_axes = 0;
g_return_val_if_fail (event != NULL, NULL);
@@ -1324,29 +1322,25 @@ clutter_event_copy (const ClutterEvent *event)
new_real_event->locked_state = real_event->locked_state;
new_real_event->tool = real_event->tool;
- device = clutter_event_get_device (event);
- if (device != NULL)
- n_axes = clutter_input_device_get_n_axes (device);
-
switch (event->type)
{
case CLUTTER_BUTTON_PRESS:
case CLUTTER_BUTTON_RELEASE:
if (event->button.axes != NULL)
new_event->button.axes = g_memdup (event->button.axes,
- sizeof (gdouble) * n_axes);
+ sizeof (gdouble) * CLUTTER_INPUT_AXIS_LAST);
break;
case CLUTTER_SCROLL:
if (event->scroll.axes != NULL)
new_event->scroll.axes = g_memdup (event->scroll.axes,
- sizeof (gdouble) * n_axes);
+ sizeof (gdouble) * CLUTTER_INPUT_AXIS_LAST);
break;
case CLUTTER_MOTION:
if (event->motion.axes != NULL)
new_event->motion.axes = g_memdup (event->motion.axes,
- sizeof (gdouble) * n_axes);
+ sizeof (gdouble) * CLUTTER_INPUT_AXIS_LAST);
break;
case CLUTTER_TOUCH_BEGIN:
@@ -1355,7 +1349,7 @@ clutter_event_copy (const ClutterEvent *event)
case CLUTTER_TOUCH_CANCEL:
if (event->touch.axes != NULL)
new_event->touch.axes = g_memdup (event->touch.axes,
- sizeof (gdouble) * n_axes);
+ sizeof (gdouble) * CLUTTER_INPUT_AXIS_LAST);
break;
case CLUTTER_DEVICE_ADDED:
@@ -1624,7 +1618,6 @@ clutter_event_get_axes (const ClutterEvent *event,
guint *n_axes)
{
gdouble *retval = NULL;
- guint len = 0;
switch (event->type)
{
@@ -1675,19 +1668,8 @@ clutter_event_get_axes (const ClutterEvent *event,
break;
}
- if (retval != NULL)
- {
- ClutterInputDevice *device;
-
- device = clutter_event_get_device (event);
- if (device != NULL)
- len = clutter_input_device_get_n_axes (device);
- else
- retval = NULL;
- }
-
if (n_axes)
- *n_axes = len;
+ *n_axes = CLUTTER_INPUT_AXIS_LAST;
return retval;
}
diff --git a/src/backends/native/meta-seat-impl.c b/src/backends/native/meta-seat-impl.c
index db34c4a22c..41c8d40b09 100644
--- a/src/backends/native/meta-seat-impl.c
+++ b/src/backends/native/meta-seat-impl.c
@@ -1686,63 +1686,57 @@ static double *
translate_tablet_axes (struct libinput_event_tablet_tool *tablet_event,
ClutterInputDeviceTool *tool)
{
- GArray *axes = g_array_new (FALSE, FALSE, sizeof (double));
+ double *axes = g_new0 (double, CLUTTER_INPUT_AXIS_LAST);
struct libinput_tablet_tool *libinput_tool;
double value;
libinput_tool = libinput_event_tablet_tool_get_tool (tablet_event);
value = libinput_event_tablet_tool_get_x (tablet_event);
- g_array_append_val (axes, value);
+ axes[CLUTTER_INPUT_AXIS_X] = value;
value = libinput_event_tablet_tool_get_y (tablet_event);
- g_array_append_val (axes, value);
+ axes[CLUTTER_INPUT_AXIS_Y] = value;
if (libinput_tablet_tool_has_distance (libinput_tool))
{
value = libinput_event_tablet_tool_get_distance (tablet_event);
- g_array_append_val (axes, value);
+ axes[CLUTTER_INPUT_AXIS_DISTANCE] = value;
}
if (libinput_tablet_tool_has_pressure (libinput_tool))
{
value = libinput_event_tablet_tool_get_pressure (tablet_event);
value = meta_input_device_tool_native_translate_pressure (tool, value);
- g_array_append_val (axes, value);
+ axes[CLUTTER_INPUT_AXIS_PRESSURE] = value;
}
if (libinput_tablet_tool_has_tilt (libinput_tool))
{
value = libinput_event_tablet_tool_get_tilt_x (tablet_event);
- g_array_append_val (axes, value);
+ axes[CLUTTER_INPUT_AXIS_XTILT] = value;
value = libinput_event_tablet_tool_get_tilt_y (tablet_event);
- g_array_append_val (axes, value);
+ axes[CLUTTER_INPUT_AXIS_YTILT] = value;
}
if (libinput_tablet_tool_has_rotation (libinput_tool))
{
value = libinput_event_tablet_tool_get_rotation (tablet_event);
- g_array_append_val (axes, value);
+ axes[CLUTTER_INPUT_AXIS_ROTATION] = value;
}
if (libinput_tablet_tool_has_slider (libinput_tool))
{
value = libinput_event_tablet_tool_get_slider_position (tablet_event);
- g_array_append_val (axes, value);
+ axes[CLUTTER_INPUT_AXIS_SLIDER] = value;
}
if (libinput_tablet_tool_has_wheel (libinput_tool))
{
value = libinput_event_tablet_tool_get_wheel_delta (tablet_event);
- g_array_append_val (axes, value);
+ axes[CLUTTER_INPUT_AXIS_WHEEL] = value;
}
- if (axes->len == 0)
- {
- g_array_free (axes, TRUE);
- return NULL;
- }
- else
- return (double *) g_array_free (axes, FALSE);
+ return axes;
}
static void
@@ -1825,8 +1819,6 @@ process_tablet_axis (MetaSeatImpl *seat_impl,
axes = translate_tablet_axes (tablet_event,
evdev_device->last_tool);
- if (!axes)
- return;
meta_viewport_info_get_extents (seat_impl->viewports,
&stage_width, &stage_height);
diff --git a/src/backends/x11/meta-seat-x11.c b/src/backends/x11/meta-seat-x11.c
index a8f4f9fd11..a3f0bc5976 100644
--- a/src/backends/x11/meta-seat-x11.c
+++ b/src/backends/x11/meta-seat-x11.c
@@ -1135,12 +1135,11 @@ translate_axes (ClutterInputDevice *device,
double y,
XIValuatorState *valuators)
{
- uint32_t n_axes = clutter_input_device_get_n_axes (device);
uint32_t i;
double *retval;
double *values;
- retval = g_new0 (double, n_axes);
+ retval = g_new0 (double, CLUTTER_INPUT_AXIS_LAST);
values = valuators->values;
for (i = 0; i < valuators->mask_len * 8; i++)
@@ -1157,15 +1156,15 @@ translate_axes (ClutterInputDevice *device,
switch (axis)
{
case CLUTTER_INPUT_AXIS_X:
- retval[i] = x;
+ retval[axis] = x;
break;
case CLUTTER_INPUT_AXIS_Y:
- retval[i] = y;
+ retval[axis] = y;
break;
default:
- _clutter_input_device_translate_axis (device, i, val, &retval[i]);
+ _clutter_input_device_translate_axis (device, i, val, &retval[axis]);
break;
}
}
diff --git a/src/wayland/meta-wayland-tablet-tool.c b/src/wayland/meta-wayland-tablet-tool.c
index 8c1984f622..efcb53bca1 100644
--- a/src/wayland/meta-wayland-tablet-tool.c
+++ b/src/wayland/meta-wayland-tablet-tool.c
@@ -691,15 +691,10 @@ broadcast_axis (MetaWaylandTabletTool *tool,
ClutterInputAxis axis)
{
struct wl_resource *resource;
- ClutterInputDevice *source;
uint32_t value;
- gdouble val;
-
- source = clutter_event_get_source_device (event);
-
- if (!clutter_input_device_get_axis_value (source, event->motion.axes, axis, &val))
- return;
+ double val;
+ val = event->motion.axes[axis];
value = val * TABLET_AXIS_MAX;
wl_resource_for_each (resource, &tool->focus_resource_list)
@@ -726,16 +721,10 @@ broadcast_tilt (MetaWaylandTabletTool *tool,
const ClutterEvent *event)
{
struct wl_resource *resource;
- ClutterInputDevice *source;
gdouble xtilt, ytilt;
- source = clutter_event_get_source_device (event);
-
- if (!clutter_input_device_get_axis_value (source, event->motion.axes,
- CLUTTER_INPUT_AXIS_XTILT, &xtilt) ||
- !clutter_input_device_get_axis_value (source, event->motion.axes,
- CLUTTER_INPUT_AXIS_YTILT, &ytilt))
- return;
+ xtilt = event->motion.axes[CLUTTER_INPUT_AXIS_FLAG_XTILT];
+ ytilt = event->motion.axes[CLUTTER_INPUT_AXIS_FLAG_YTILT];
wl_resource_for_each (resource, &tool->focus_resource_list)
{
@@ -750,15 +739,9 @@ broadcast_rotation (MetaWaylandTabletTool *tool,
const ClutterEvent *event)
{
struct wl_resource *resource;
- ClutterInputDevice *source;
gdouble rotation;
- source = clutter_event_get_source_device (event);
-
- if (!clutter_input_device_get_axis_value (source, event->motion.axes,
- CLUTTER_INPUT_AXIS_ROTATION,
- &rotation))
- return;
+ rotation = event->motion.axes[CLUTTER_INPUT_AXIS_FLAG_ROTATION];
wl_resource_for_each (resource, &tool->focus_resource_list)
{
@@ -772,16 +755,10 @@ broadcast_wheel (MetaWaylandTabletTool *tool,
const ClutterEvent *event)
{
struct wl_resource *resource;
- ClutterInputDevice *source;
gdouble angle;
gint32 clicks = 0;
- source = clutter_event_get_source_device (event);
-
- if (!clutter_input_device_get_axis_value (source, event->motion.axes,
- CLUTTER_INPUT_AXIS_WHEEL,
- &angle))
- return;
+ angle = event->motion.axes[CLUTTER_INPUT_AXIS_FLAG_WHEEL];
/* FIXME: Perform proper angle-to-clicks accumulation elsewhere */
if (angle > 0.01)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]