summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2015-03-16 09:40:36 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2015-03-18 09:15:40 +1000
commit0c5620a29c6f08b824457f5e6ce3c4e25c1c136e (patch)
tree2418b06d66dff033d1fe07c5c793ac7b6789224d
parentfb50cef7002392eb16537fe8f0cdffbc2ab03a7a (diff)
Add a helper function for making properties
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
-rw-r--r--src/libinput.c212
1 files changed, 80 insertions, 132 deletions
diff --git a/src/libinput.c b/src/libinput.c
index 3794d74..ad5ac85 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