[PATCH xf86-input-libinput 1/2] Add a helper function for making properties
Hans de Goede
hdegoede at redhat.com
Tue Mar 17 02:02:12 PDT 2015
Hi,
On 16-03-15 23:22, Peter Hutterer wrote:
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
Both patches look good to me and are:
Reviewed-by: Hans de Goede <hdegoede at redhat.com>
Regards,
Hans
> ---
> src/libinput.c | 212 ++++++++++++++++++++++-----------------------------------
> 1 file changed, 80 insertions(+), 132 deletions(-)
>
> diff --git a/src/libinput.c b/src/libinput.c
> index 5f2bd34..1eadbc7 100644
> --- a/src/libinput.c
> +++ b/src/libinput.c
> @@ -1727,23 +1727,44 @@ LibinputSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val,
> return rc;
> }
>
> +static Atom
> +LibinputMakeProperty(DeviceIntPtr dev,
> + const char *prop_name,
> + Atom type,
> + int format,
> + int len,
> + void *data)
> +{
> + int rc;
> + Atom prop = MakeAtom(prop_name, strlen(prop_name), TRUE);
> +
> + rc = XIChangeDeviceProperty(dev, prop, type, format,
> + PropModeReplace,
> + len, data, FALSE);
> + if (rc != Success)
> + return None;
> +
> + XISetDevicePropertyDeletable(dev, prop, FALSE);
> +
> + return prop;
> +}
> +
> static void
> LibinputInitTapProperty(DeviceIntPtr dev,
> struct xf86libinput *driver_data,
> struct libinput_device *device)
> {
> BOOL tap = driver_data->options.tapping;
> - int rc;
>
> if (libinput_device_config_tap_get_finger_count(device) == 0)
> return;
>
> - prop_tap = MakeAtom(LIBINPUT_PROP_TAP, strlen(LIBINPUT_PROP_TAP), TRUE);
> - rc = XIChangeDeviceProperty(dev, prop_tap, XA_INTEGER, 8,
> - PropModeReplace, 1, &tap, FALSE);
> - if (rc != Success)
> - return;
> - XISetDevicePropertyDeletable(dev, prop_tap, FALSE);
> + prop_tap = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_TAP,
> + XA_INTEGER,
> + 8,
> + 1,
> + &tap);
> }
>
> static void
> @@ -1752,7 +1773,6 @@ LibinputInitCalibrationProperty(DeviceIntPtr dev,
> struct libinput_device *device)
> {
> float calibration[9];
> - int rc;
>
> if (!libinput_device_config_calibration_has_matrix(device))
> return;
> @@ -1765,15 +1785,10 @@ LibinputInitCalibrationProperty(DeviceIntPtr dev,
> calibration[7] = 0;
> calibration[8] = 1;
>
> - prop_calibration = MakeAtom(LIBINPUT_PROP_CALIBRATION,
> - strlen(LIBINPUT_PROP_CALIBRATION),
> - TRUE);
> -
> - rc = XIChangeDeviceProperty(dev, prop_calibration, prop_float, 32,
> - PropModeReplace, 9, calibration, FALSE);
> - if (rc != Success)
> - return;
> - XISetDevicePropertyDeletable(dev, prop_calibration, FALSE);
> + prop_calibration = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_CALIBRATION,
> + prop_float, 32,
> + 9, calibration);
> }
>
> static void
> @@ -1782,17 +1797,14 @@ LibinputInitAccelProperty(DeviceIntPtr dev,
> struct libinput_device *device)
> {
> float speed = driver_data->options.speed;
> - int rc;
>
> if (!libinput_device_config_accel_is_available(device))
> return;
>
> - prop_accel = MakeAtom(LIBINPUT_PROP_ACCEL, strlen(LIBINPUT_PROP_ACCEL), TRUE);
> - rc = XIChangeDeviceProperty(dev, prop_accel, prop_float, 32,
> - PropModeReplace, 1, &speed, FALSE);
> - if (rc != Success)
> - return;
> - XISetDevicePropertyDeletable(dev, prop_accel, FALSE);
> + prop_accel = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_ACCEL,
> + prop_float, 32,
> + 1, &speed);
> }
>
> static void
> @@ -1801,19 +1813,14 @@ LibinputInitNaturalScrollProperty(DeviceIntPtr dev,
> struct libinput_device *device)
> {
> BOOL natural_scroll = driver_data->options.natural_scrolling;
> - int rc;
>
> if (!libinput_device_config_scroll_has_natural_scroll(device))
> return;
>
> - prop_natural_scroll = MakeAtom(LIBINPUT_PROP_NATURAL_SCROLL,
> - strlen(LIBINPUT_PROP_NATURAL_SCROLL),
> - TRUE);
> - rc = XIChangeDeviceProperty(dev, prop_natural_scroll, XA_INTEGER, 8,
> - PropModeReplace, 1, &natural_scroll, FALSE);
> - if (rc != Success)
> - return;
> - XISetDevicePropertyDeletable(dev, prop_natural_scroll, FALSE);
> + prop_natural_scroll = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_NATURAL_SCROLL,
> + XA_INTEGER, 8,
> + 1, &natural_scroll);
> }
>
> static void
> @@ -1824,7 +1831,6 @@ LibinputInitSendEventsProperty(DeviceIntPtr dev,
> uint32_t sendevent_modes;
> uint32_t sendevents;
> BOOL modes[2] = {FALSE};
> - int rc;
>
> sendevent_modes = libinput_device_config_send_events_get_modes(device);
> if (sendevent_modes == LIBINPUT_CONFIG_SEND_EVENTS_ENABLED)
> @@ -1835,15 +1841,12 @@ LibinputInitSendEventsProperty(DeviceIntPtr dev,
> if (sendevent_modes & LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE)
> modes[1] = TRUE;
>
> - prop_sendevents_available = MakeAtom(LIBINPUT_PROP_SENDEVENTS_AVAILABLE,
> - strlen(LIBINPUT_PROP_SENDEVENTS_AVAILABLE),
> - TRUE);
> - rc = XIChangeDeviceProperty(dev, prop_sendevents_available,
> - XA_INTEGER, 8,
> - PropModeReplace, 2, modes, FALSE);
> - if (rc != Success)
> + prop_sendevents_available = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_SENDEVENTS_AVAILABLE,
> + XA_INTEGER, 8,
> + 2, modes);
> + if (!prop_sendevents_available)
> return;
> - XISetDevicePropertyDeletable(dev, prop_sendevents_available, FALSE);
>
> memset(modes, 0, sizeof(modes));
> sendevents = driver_data->options.sendevents;
> @@ -1857,15 +1860,10 @@ LibinputInitSendEventsProperty(DeviceIntPtr dev,
> break;
> }
>
> - prop_sendevents_enabled = MakeAtom(LIBINPUT_PROP_SENDEVENTS_ENABLED,
> - strlen(LIBINPUT_PROP_SENDEVENTS_ENABLED),
> - TRUE);
> - rc = XIChangeDeviceProperty(dev, prop_sendevents_enabled,
> - XA_INTEGER, 8,
> - PropModeReplace, 2, modes, FALSE);
> - if (rc != Success)
> - return;
> - XISetDevicePropertyDeletable(dev, prop_sendevents_enabled, FALSE);
> + prop_sendevents_enabled = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_SENDEVENTS_ENABLED,
> + XA_INTEGER, 8,
> + 2, modes);
> }
>
> static void
> @@ -1874,20 +1872,14 @@ LibinputInitLeftHandedProperty(DeviceIntPtr dev,
> struct libinput_device *device)
> {
> BOOL left_handed = driver_data->options.left_handed;
> - int rc;
>
> if (!libinput_device_config_left_handed_is_available(device))
> return;
>
> - prop_left_handed = MakeAtom(LIBINPUT_PROP_LEFT_HANDED,
> - strlen(LIBINPUT_PROP_LEFT_HANDED),
> - TRUE);
> - rc = XIChangeDeviceProperty(dev, prop_left_handed,
> - XA_INTEGER, 8,
> - PropModeReplace, 1, &left_handed, FALSE);
> - if (rc != Success)
> - return;
> - XISetDevicePropertyDeletable(dev, prop_left_handed, FALSE);
> + prop_left_handed = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_LEFT_HANDED,
> + XA_INTEGER, 8,
> + 1, &left_handed);
> }
>
> static void
> @@ -1898,7 +1890,6 @@ LibinputInitScrollMethodsProperty(DeviceIntPtr dev,
> uint32_t scroll_methods;
> enum libinput_config_scroll_method method;
> BOOL methods[3] = {FALSE};
> - int rc;
>
> scroll_methods = libinput_device_config_scroll_get_methods(device);
> if (scroll_methods == LIBINPUT_CONFIG_SCROLL_NO_SCROLL)
> @@ -1911,21 +1902,13 @@ LibinputInitScrollMethodsProperty(DeviceIntPtr dev,
> if (scroll_methods & LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN)
> methods[2] = TRUE;
>
> - prop_scroll_methods_available =
> - MakeAtom(LIBINPUT_PROP_SCROLL_METHODS_AVAILABLE,
> - strlen(LIBINPUT_PROP_SCROLL_METHODS_AVAILABLE),
> - TRUE);
> - rc = XIChangeDeviceProperty(dev,
> - prop_scroll_methods_available,
> - XA_INTEGER, 8,
> - PropModeReplace,
> - ARRAY_SIZE(methods),
> - &methods, FALSE);
> - if (rc != Success)
> + prop_scroll_methods_available = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_SCROLL_METHODS_AVAILABLE,
> + XA_INTEGER, 8,
> + ARRAY_SIZE(methods),
> + &methods);
> + if (!prop_scroll_methods_available)
> return;
> - XISetDevicePropertyDeletable(dev,
> - prop_scroll_methods_available,
> - FALSE);
>
> memset(methods, 0, sizeof(methods));
>
> @@ -1944,38 +1927,23 @@ LibinputInitScrollMethodsProperty(DeviceIntPtr dev,
> break;
> }
>
> - prop_scroll_method_enabled =
> - MakeAtom(LIBINPUT_PROP_SCROLL_METHOD_ENABLED,
> - strlen(LIBINPUT_PROP_SCROLL_METHOD_ENABLED),
> - TRUE);
> - rc = XIChangeDeviceProperty(dev,
> - prop_scroll_method_enabled,
> - XA_INTEGER, 8,
> - PropModeReplace,
> - ARRAY_SIZE(methods),
> - &methods, FALSE);
> - if (rc != Success)
> + prop_scroll_method_enabled = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_SCROLL_METHOD_ENABLED,
> + XA_INTEGER, 8,
> + ARRAY_SIZE(methods),
> + &methods);
> + if (!prop_scroll_method_enabled)
> return;
>
> - XISetDevicePropertyDeletable(dev,
> - prop_scroll_method_enabled,
> - FALSE);
> -
> /* Scroll button */
> if (libinput_device_config_scroll_get_methods(device) &
> LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN) {
> CARD32 scroll_button = driver_data->options.scroll_button;
>
> - prop_scroll_button = MakeAtom(LIBINPUT_PROP_SCROLL_BUTTON,
> - strlen(LIBINPUT_PROP_SCROLL_BUTTON),
> - TRUE);
> - rc = XIChangeDeviceProperty(dev, prop_scroll_button,
> - XA_CARDINAL, 32,
> - PropModeReplace, 1,
> - &scroll_button, FALSE);
> - if (rc != Success)
> - return;
> - XISetDevicePropertyDeletable(dev, prop_scroll_button, FALSE);
> + prop_scroll_button = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_SCROLL_BUTTON,
> + XA_CARDINAL, 32,
> + 1, &scroll_button);
> }
> }
>
> @@ -1987,7 +1955,6 @@ LibinputInitClickMethodsProperty(DeviceIntPtr dev,
> uint32_t click_methods;
> enum libinput_config_click_method method;
> BOOL methods[2] = {FALSE};
> - int rc;
>
> click_methods = libinput_device_config_click_get_methods(device);
> if (click_methods == LIBINPUT_CONFIG_CLICK_METHOD_NONE)
> @@ -1998,21 +1965,13 @@ LibinputInitClickMethodsProperty(DeviceIntPtr dev,
> if (click_methods & LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER)
> methods[1] = TRUE;
>
> - prop_click_methods_available =
> - MakeAtom(LIBINPUT_PROP_CLICK_METHODS_AVAILABLE,
> - strlen(LIBINPUT_PROP_CLICK_METHODS_AVAILABLE),
> - TRUE);
> - rc = XIChangeDeviceProperty(dev,
> - prop_click_methods_available,
> - XA_INTEGER, 8,
> - PropModeReplace,
> - ARRAY_SIZE(methods),
> - &methods, FALSE);
> - if (rc != Success)
> + prop_click_methods_available = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_CLICK_METHODS_AVAILABLE,
> + XA_INTEGER, 8,
> + ARRAY_SIZE(methods),
> + &methods);
> + if (!prop_click_methods_available)
> return;
> - XISetDevicePropertyDeletable(dev,
> - prop_click_methods_available,
> - FALSE);
>
> memset(methods, 0, sizeof(methods));
>
> @@ -2028,22 +1987,11 @@ LibinputInitClickMethodsProperty(DeviceIntPtr dev,
> break;
> }
>
> - prop_click_method_enabled =
> - MakeAtom(LIBINPUT_PROP_CLICK_METHOD_ENABLED,
> - strlen(LIBINPUT_PROP_CLICK_METHOD_ENABLED),
> - TRUE);
> - rc = XIChangeDeviceProperty(dev,
> - prop_click_method_enabled,
> - XA_INTEGER, 8,
> - PropModeReplace,
> - ARRAY_SIZE(methods),
> - &methods, FALSE);
> - if (rc != Success)
> - return;
> -
> - XISetDevicePropertyDeletable(dev,
> - prop_click_method_enabled,
> - FALSE);
> + prop_click_method_enabled = LibinputMakeProperty(dev,
> + LIBINPUT_PROP_CLICK_METHOD_ENABLED,
> + XA_INTEGER, 8,
> + ARRAY_SIZE(methods),
> + &methods);
> }
>
> static void
>
More information about the xorg-devel
mailing list