[PATCH libinput 2/2] evdev: add a wrapper to get the evdev device from a libinput device

Peter Hutterer peter.hutterer at who-t.net
Mon Jan 30 22:21:56 UTC 2017


Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 src/evdev-middle-button.c       |  8 ++--
 src/evdev-mt-touchpad-buttons.c | 10 ++---
 src/evdev-mt-touchpad-tap.c     | 60 +++++++++----------------
 src/evdev-mt-touchpad.c         | 24 +++++-----
 src/evdev-tablet-pad.c          |  4 +-
 src/evdev.c                     | 98 ++++++++++++++++++++---------------------
 src/evdev.h                     |  8 ++++
 src/libinput.c                  | 38 ++++++----------
 src/path-seat.c                 |  6 +--
 src/udev-seat.c                 |  4 +-
 10 files changed, 119 insertions(+), 141 deletions(-)

diff --git a/src/evdev-middle-button.c b/src/evdev-middle-button.c
index 09f77de..d9330ba 100644
--- a/src/evdev-middle-button.c
+++ b/src/evdev-middle-button.c
@@ -638,7 +638,7 @@ evdev_middlebutton_filter_button(struct evdev_device *device,
 static void
 evdev_middlebutton_handle_timeout(uint64_t now, void *data)
 {
-	struct evdev_device *device = (struct evdev_device*)data;
+	struct evdev_device *device = evdev_device(data);
 
 	evdev_middlebutton_handle_event(device, now, MIDDLEBUTTON_EVENT_TIMEOUT);
 }
@@ -653,7 +653,7 @@ static enum libinput_config_status
 evdev_middlebutton_set(struct libinput_device *device,
 		       enum libinput_config_middle_emulation_state enable)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	switch (enable) {
 	case LIBINPUT_CONFIG_MIDDLE_EMULATION_ENABLED:
@@ -674,7 +674,7 @@ evdev_middlebutton_set(struct libinput_device *device,
 enum libinput_config_middle_emulation_state
 evdev_middlebutton_get(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	return evdev->middlebutton.want_enabled ?
 			LIBINPUT_CONFIG_MIDDLE_EMULATION_ENABLED :
@@ -684,7 +684,7 @@ evdev_middlebutton_get(struct libinput_device *device)
 enum libinput_config_middle_emulation_state
 evdev_middlebutton_get_default(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	return evdev->middlebutton.enabled_default ?
 			LIBINPUT_CONFIG_MIDDLE_EMULATION_ENABLED :
diff --git a/src/evdev-mt-touchpad-buttons.c b/src/evdev-mt-touchpad-buttons.c
index f4fe6b7..4a68470 100644
--- a/src/evdev-mt-touchpad-buttons.c
+++ b/src/evdev-mt-touchpad-buttons.c
@@ -627,7 +627,7 @@ tp_init_top_softbuttons(struct tp_dispatch *tp,
 static inline uint32_t
 tp_button_config_click_get_methods(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 	uint32_t methods = LIBINPUT_CONFIG_CLICK_METHOD_NONE;
 
@@ -669,7 +669,7 @@ static enum libinput_config_status
 tp_button_config_click_set_method(struct libinput_device *device,
 				  enum libinput_config_click_method method)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 
 	tp->buttons.click_method = method;
@@ -681,7 +681,7 @@ tp_button_config_click_set_method(struct libinput_device *device,
 static enum libinput_config_click_method
 tp_button_config_click_get_method(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 
 	return tp->buttons.click_method;
@@ -711,7 +711,7 @@ tp_click_get_default_method(struct tp_dispatch *tp)
 static enum libinput_config_click_method
 tp_button_config_click_get_default_method(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 
 	return tp_click_get_default_method(tp);
@@ -746,7 +746,7 @@ static enum libinput_config_status
 tp_clickpad_middlebutton_set(struct libinput_device *device,
 		     enum libinput_config_middle_emulation_state enable)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	switch (enable) {
 	case LIBINPUT_CONFIG_MIDDLE_EMULATION_ENABLED:
diff --git a/src/evdev-mt-touchpad-tap.c b/src/evdev-mt-touchpad-tap.c
index 5fccbc2..1829732 100644
--- a/src/evdev-mt-touchpad-tap.c
+++ b/src/evdev-mt-touchpad-tap.c
@@ -897,11 +897,8 @@ tp_tap_enabled_update(struct tp_dispatch *tp, bool suspended, bool enabled, uint
 static int
 tp_tap_config_count(struct libinput_device *device)
 {
-	struct evdev_dispatch *dispatch;
-	struct tp_dispatch *tp = NULL;
-
-	dispatch = ((struct evdev_device *) device)->dispatch;
-	tp = tp_dispatch(dispatch);
+	struct evdev_dispatch *dispatch = evdev_device(device)->dispatch;
+	struct tp_dispatch *tp = tp_dispatch(dispatch);
 
 	return min(tp->ntouches, 3U); /* we only do up to 3 finger tap */
 }
@@ -910,11 +907,8 @@ static enum libinput_config_status
 tp_tap_config_set_enabled(struct libinput_device *device,
 			  enum libinput_config_tap_state enabled)
 {
-	struct evdev_dispatch *dispatch;
-	struct tp_dispatch *tp = NULL;
-
-	dispatch = ((struct evdev_device *) device)->dispatch;
-	tp = tp_dispatch(dispatch);
+	struct evdev_dispatch *dispatch = evdev_device(device)->dispatch;
+	struct tp_dispatch *tp = tp_dispatch(dispatch);
 
 	tp_tap_enabled_update(tp, tp->tap.suspended,
 			      (enabled == LIBINPUT_CONFIG_TAP_ENABLED),
@@ -926,11 +920,8 @@ tp_tap_config_set_enabled(struct libinput_device *device,
 static enum libinput_config_tap_state
 tp_tap_config_is_enabled(struct libinput_device *device)
 {
-	struct evdev_dispatch *dispatch;
-	struct tp_dispatch *tp = NULL;
-
-	dispatch = ((struct evdev_device *) device)->dispatch;
-	tp = tp_dispatch(dispatch);
+	struct evdev_dispatch *dispatch = evdev_device(device)->dispatch;
+	struct tp_dispatch *tp = tp_dispatch(dispatch);
 
 	return tp->tap.enabled ? LIBINPUT_CONFIG_TAP_ENABLED :
 				 LIBINPUT_CONFIG_TAP_DISABLED;
@@ -961,7 +952,7 @@ tp_tap_default(struct evdev_device *evdev)
 static enum libinput_config_tap_state
 tp_tap_config_get_default(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device *)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	return tp_tap_default(evdev);
 }
@@ -970,10 +961,9 @@ static enum libinput_config_status
 tp_tap_config_set_map(struct libinput_device *device,
 		      enum libinput_config_tap_button_map map)
 {
-	struct evdev_dispatch *dispatch = ((struct evdev_device *) device)->dispatch;
-	struct tp_dispatch *tp = NULL;
+	struct evdev_dispatch *dispatch = evdev_device(device)->dispatch;
+	struct tp_dispatch *tp = tp_dispatch(dispatch);
 
-	tp = tp_dispatch(dispatch);
 	tp->tap.want_map = map;
 
 	tp_tap_update_map(tp);
@@ -984,10 +974,8 @@ tp_tap_config_set_map(struct libinput_device *device,
 static enum libinput_config_tap_button_map
 tp_tap_config_get_map(struct libinput_device *device)
 {
-	struct evdev_dispatch *dispatch = ((struct evdev_device *) device)->dispatch;
-	struct tp_dispatch *tp = NULL;
-
-	tp = tp_dispatch(dispatch);
+	struct evdev_dispatch *dispatch = evdev_device(device)->dispatch;
+	struct tp_dispatch *tp = tp_dispatch(dispatch);
 
 	return tp->tap.want_map;
 }
@@ -1002,10 +990,9 @@ static enum libinput_config_status
 tp_tap_config_set_drag_enabled(struct libinput_device *device,
 			       enum libinput_config_drag_state enabled)
 {
-	struct evdev_dispatch *dispatch = ((struct evdev_device *) device)->dispatch;
-	struct tp_dispatch *tp = NULL;
+	struct evdev_dispatch *dispatch = evdev_device(device)->dispatch;
+	struct tp_dispatch *tp = tp_dispatch(dispatch);
 
-	tp = tp_dispatch(dispatch);
 	tp->tap.drag_enabled = enabled;
 
 	return LIBINPUT_CONFIG_STATUS_SUCCESS;
@@ -1014,10 +1001,8 @@ tp_tap_config_set_drag_enabled(struct libinput_device *device,
 static enum libinput_config_drag_state
 tp_tap_config_get_drag_enabled(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device *)device;
-	struct tp_dispatch *tp = NULL;
-
-	tp = tp_dispatch(evdev->dispatch);
+	struct evdev_dispatch *dispatch = evdev_device(device)->dispatch;
+	struct tp_dispatch *tp = tp_dispatch(dispatch);
 
 	return tp->tap.drag_enabled;
 }
@@ -1031,7 +1016,7 @@ tp_drag_default(struct evdev_device *device)
 static enum libinput_config_drag_state
 tp_tap_config_get_default_drag_enabled(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device *)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	return tp_drag_default(evdev);
 }
@@ -1040,10 +1025,9 @@ static enum libinput_config_status
 tp_tap_config_set_draglock_enabled(struct libinput_device *device,
 				   enum libinput_config_drag_lock_state enabled)
 {
-	struct evdev_dispatch *dispatch = ((struct evdev_device *) device)->dispatch;
-	struct tp_dispatch *tp = NULL;
+	struct evdev_dispatch *dispatch = evdev_device(device)->dispatch;
+	struct tp_dispatch *tp = tp_dispatch(dispatch);
 
-	tp = tp_dispatch(dispatch);
 	tp->tap.drag_lock_enabled = enabled;
 
 	return LIBINPUT_CONFIG_STATUS_SUCCESS;
@@ -1052,10 +1036,8 @@ tp_tap_config_set_draglock_enabled(struct libinput_device *device,
 static enum libinput_config_drag_lock_state
 tp_tap_config_get_draglock_enabled(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device *)device;
-	struct tp_dispatch *tp = NULL;
-
-	tp = tp_dispatch(evdev->dispatch);
+	struct evdev_dispatch *dispatch = evdev_device(device)->dispatch;
+	struct tp_dispatch *tp = tp_dispatch(dispatch);
 
 	return tp->tap.drag_lock_enabled;
 }
@@ -1069,7 +1051,7 @@ tp_drag_lock_default(struct evdev_device *device)
 static enum libinput_config_drag_lock_state
 tp_tap_config_get_default_draglock_enabled(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device *)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	return tp_drag_lock_default(evdev);
 }
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index d232634..9614f8e 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -1645,7 +1645,7 @@ tp_interface_device_removed(struct evdev_device *device,
 		return;
 
 	list_for_each(dev, &device->base.seat->devices_list, link) {
-		struct evdev_device *d = (struct evdev_device*)dev;
+		struct evdev_device *d = evdev_device(dev);
 		if (d != removed_device &&
 		    (d->tags & EVDEV_TAG_EXTERNAL_MOUSE)) {
 			return;
@@ -1982,7 +1982,7 @@ tp_scroll_get_methods(struct tp_dispatch *tp)
 static uint32_t
 tp_scroll_config_scroll_method_get_methods(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 
 	return tp_scroll_get_methods(tp);
@@ -1992,7 +1992,7 @@ static enum libinput_config_status
 tp_scroll_config_scroll_method_set_method(struct libinput_device *device,
 		        enum libinput_config_scroll_method method)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 	uint64_t time = libinput_now(tp_libinput_context(tp));
 
@@ -2010,7 +2010,7 @@ tp_scroll_config_scroll_method_set_method(struct libinput_device *device,
 static enum libinput_config_scroll_method
 tp_scroll_config_scroll_method_get_method(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 
 	return tp->scroll.method;
@@ -2039,7 +2039,7 @@ tp_scroll_get_default_method(struct tp_dispatch *tp)
 static enum libinput_config_scroll_method
 tp_scroll_config_scroll_method_get_default_method(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 
 	return tp_scroll_get_default_method(tp);
@@ -2074,7 +2074,7 @@ static enum libinput_config_status
 tp_dwt_config_set(struct libinput_device *device,
 	   enum libinput_config_dwt_state enable)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 
 	switch(enable) {
@@ -2093,7 +2093,7 @@ tp_dwt_config_set(struct libinput_device *device,
 static enum libinput_config_dwt_state
 tp_dwt_config_get(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 
 	return tp->dwt.dwt_enabled ?
@@ -2110,7 +2110,7 @@ tp_dwt_default_enabled(struct tp_dispatch *tp)
 static enum libinput_config_dwt_state
 tp_dwt_config_get_default(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 
 	return tp_dwt_default_enabled(tp) ?
@@ -2365,7 +2365,7 @@ tp_init(struct tp_dispatch *tp,
 static uint32_t
 tp_sendevents_get_modes(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	uint32_t modes = LIBINPUT_CONFIG_SEND_EVENTS_DISABLED;
 
 	if (evdev->tags & EVDEV_TAG_INTERNAL_TOUCHPAD)
@@ -2381,7 +2381,7 @@ tp_suspend_conditional(struct tp_dispatch *tp,
 	struct libinput_device *dev;
 
 	list_for_each(dev, &device->base.seat->devices_list, link) {
-		struct evdev_device *d = (struct evdev_device*)dev;
+		struct evdev_device *d = evdev_device(dev);
 		if (d->tags & EVDEV_TAG_EXTERNAL_MOUSE) {
 			tp_suspend(tp, device);
 			return;
@@ -2393,7 +2393,7 @@ static enum libinput_config_status
 tp_sendevents_set_mode(struct libinput_device *device,
 		       enum libinput_config_send_events_mode mode)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *tp = (struct tp_dispatch*)evdev->dispatch;
 
 	/* DISABLED overrides any DISABLED_ON_ */
@@ -2426,7 +2426,7 @@ tp_sendevents_set_mode(struct libinput_device *device,
 static enum libinput_config_send_events_mode
 tp_sendevents_get_mode(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct tp_dispatch *dispatch = (struct tp_dispatch*)evdev->dispatch;
 
 	return dispatch->sendevents.current_mode;
diff --git a/src/evdev-tablet-pad.c b/src/evdev-tablet-pad.c
index cc7553f..bed43b6 100644
--- a/src/evdev-tablet-pad.c
+++ b/src/evdev-tablet-pad.c
@@ -580,7 +580,7 @@ static enum libinput_config_status
 pad_sendevents_set_mode(struct libinput_device *device,
 			enum libinput_config_send_events_mode mode)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct pad_dispatch *pad = (struct pad_dispatch*)evdev->dispatch;
 
 	if (mode == pad->sendevents.current_mode)
@@ -604,7 +604,7 @@ pad_sendevents_set_mode(struct libinput_device *device,
 static enum libinput_config_send_events_mode
 pad_sendevents_get_mode(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct pad_dispatch *dispatch = (struct pad_dispatch*)evdev->dispatch;
 
 	return dispatch->sendevents.current_mode;
diff --git a/src/evdev.c b/src/evdev.c
index e040583..afee590 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -1260,7 +1260,7 @@ fallback_destroy(struct evdev_dispatch *evdev_dispatch)
 static int
 evdev_calibration_has_matrix(struct libinput_device *libinput_device)
 {
-	struct evdev_device *device = (struct evdev_device*)libinput_device;
+	struct evdev_device *device = evdev_device(libinput_device);
 
 	return device->abs.absinfo_x && device->abs.absinfo_y;
 }
@@ -1269,7 +1269,7 @@ static enum libinput_config_status
 evdev_calibration_set_matrix(struct libinput_device *libinput_device,
 			     const float matrix[6])
 {
-	struct evdev_device *device = (struct evdev_device*)libinput_device;
+	struct evdev_device *device = evdev_device(libinput_device);
 
 	evdev_device_calibrate(device, matrix);
 
@@ -1280,7 +1280,7 @@ static int
 evdev_calibration_get_matrix(struct libinput_device *libinput_device,
 			     float matrix[6])
 {
-	struct evdev_device *device = (struct evdev_device*)libinput_device;
+	struct evdev_device *device = evdev_device(libinput_device);
 
 	matrix_to_farray6(&device->abs.usermatrix, matrix);
 
@@ -1291,7 +1291,7 @@ static int
 evdev_calibration_get_default_matrix(struct libinput_device *libinput_device,
 				     float matrix[6])
 {
-	struct evdev_device *device = (struct evdev_device*)libinput_device;
+	struct evdev_device *device = evdev_device(libinput_device);
 
 	matrix_to_farray6(&device->abs.default_calibration, matrix);
 
@@ -1321,7 +1321,7 @@ static enum libinput_config_status
 evdev_sendevents_set_mode(struct libinput_device *device,
 			  enum libinput_config_send_events_mode mode)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct evdev_dispatch *dispatch = evdev->dispatch;
 
 	if (mode == dispatch->sendevents.current_mode)
@@ -1346,7 +1346,7 @@ evdev_sendevents_set_mode(struct libinput_device *device,
 static enum libinput_config_send_events_mode
 evdev_sendevents_get_mode(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct evdev_dispatch *dispatch = evdev->dispatch;
 
 	return dispatch->sendevents.current_mode;
@@ -1383,11 +1383,11 @@ evdev_change_to_left_handed(struct evdev_device *device)
 static enum libinput_config_status
 evdev_left_handed_set(struct libinput_device *device, int left_handed)
 {
-	struct evdev_device *evdev_device = (struct evdev_device *)device;
+	struct evdev_device *evdev = evdev_device(device);
 
-	evdev_device->left_handed.want_enabled = left_handed ? true : false;
+	evdev->left_handed.want_enabled = left_handed ? true : false;
 
-	evdev_device->left_handed.change_to_enabled(evdev_device);
+	evdev->left_handed.change_to_enabled(evdev);
 
 	return LIBINPUT_CONFIG_STATUS_SUCCESS;
 }
@@ -1395,11 +1395,11 @@ evdev_left_handed_set(struct libinput_device *device, int left_handed)
 static int
 evdev_left_handed_get(struct libinput_device *device)
 {
-	struct evdev_device *evdev_device = (struct evdev_device *)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	/* return the wanted configuration, even if it hasn't taken
 	 * effect yet! */
-	return evdev_device->left_handed.want_enabled;
+	return evdev->left_handed.want_enabled;
 }
 
 static int
@@ -1448,7 +1448,7 @@ static enum libinput_config_status
 evdev_scroll_set_method(struct libinput_device *device,
 			enum libinput_config_scroll_method method)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	evdev->scroll.want_method = method;
 	evdev->scroll.change_scroll_method(evdev);
@@ -1459,7 +1459,7 @@ evdev_scroll_set_method(struct libinput_device *device,
 static enum libinput_config_scroll_method
 evdev_scroll_get_method(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device *)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	/* return the wanted configuration, even if it hasn't taken
 	 * effect yet! */
@@ -1469,7 +1469,7 @@ evdev_scroll_get_method(struct libinput_device *device)
 static enum libinput_config_scroll_method
 evdev_scroll_get_default_method(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device *)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	if (evdev->tags & EVDEV_TAG_TRACKPOINT)
 		return LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN;
@@ -1488,7 +1488,7 @@ static enum libinput_config_status
 evdev_scroll_set_button(struct libinput_device *device,
 			uint32_t button)
 {
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	evdev->scroll.want_button = button;
 	evdev->scroll.change_scroll_method(evdev);
@@ -1499,7 +1499,7 @@ evdev_scroll_set_button(struct libinput_device *device,
 static uint32_t
 evdev_scroll_get_button(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device *)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	/* return the wanted configuration, even if it hasn't taken
 	 * effect yet! */
@@ -1509,7 +1509,7 @@ evdev_scroll_get_button(struct libinput_device *device)
 static uint32_t
 evdev_scroll_get_default_button(struct libinput_device *device)
 {
-	struct evdev_device *evdev = (struct evdev_device *)device;
+	struct evdev_device *evdev = evdev_device(device);
 
 	if (libevdev_has_event_code(evdev->evdev, EV_KEY, BTN_MIDDLE))
 		return BTN_MIDDLE;
@@ -1574,7 +1574,7 @@ static enum libinput_config_status
 evdev_scroll_config_natural_set(struct libinput_device *device,
 				int enabled)
 {
-	struct evdev_device *dev = (struct evdev_device *)device;
+	struct evdev_device *dev = evdev_device(device);
 
 	dev->scroll.natural_scrolling_enabled = enabled ? true : false;
 
@@ -1584,7 +1584,7 @@ evdev_scroll_config_natural_set(struct libinput_device *device,
 static int
 evdev_scroll_config_natural_get(struct libinput_device *device)
 {
-	struct evdev_device *dev = (struct evdev_device *)device;
+	struct evdev_device *dev = evdev_device(device);
 
 	return dev->scroll.natural_scrolling_enabled ? 1 : 0;
 }
@@ -1619,7 +1619,7 @@ static enum libinput_config_status
 evdev_rotation_config_set_angle(struct libinput_device *libinput_device,
 				unsigned int degrees_cw)
 {
-	struct evdev_device *device = (struct evdev_device*)libinput_device;
+	struct evdev_device *device = evdev_device(libinput_device);
 	struct fallback_dispatch *dispatch = fallback_dispatch(device->dispatch);
 
 	dispatch->rotation.angle = degrees_cw;
@@ -1631,7 +1631,7 @@ evdev_rotation_config_set_angle(struct libinput_device *libinput_device,
 static unsigned int
 evdev_rotation_config_get_angle(struct libinput_device *libinput_device)
 {
-	struct evdev_device *device = (struct evdev_device*)libinput_device;
+	struct evdev_device *device = evdev_device(libinput_device);
 	struct fallback_dispatch *dispatch = fallback_dispatch(device->dispatch);
 
 	return dispatch->rotation.angle;
@@ -1766,10 +1766,10 @@ fallback_dispatch_init_abs(struct fallback_dispatch *dispatch,
 }
 
 static struct evdev_dispatch *
-fallback_dispatch_create(struct libinput_device *device)
+fallback_dispatch_create(struct libinput_device *libinput_device)
 {
 	struct fallback_dispatch *dispatch = zalloc(sizeof *dispatch);
-	struct evdev_device *evdev_device = (struct evdev_device *)device;
+	struct evdev_device *device = evdev_device(libinput_device);
 
 	if (dispatch == NULL)
 		return NULL;
@@ -1778,42 +1778,42 @@ fallback_dispatch_create(struct libinput_device *device)
 	dispatch->base.interface = &fallback_interface;
 	dispatch->pending_event = EVDEV_NONE;
 
-	fallback_dispatch_init_rel(dispatch, evdev_device);
-	fallback_dispatch_init_abs(dispatch, evdev_device);
-	if (fallback_dispatch_init_slots(dispatch, evdev_device) == -1) {
+	fallback_dispatch_init_rel(dispatch, device);
+	fallback_dispatch_init_abs(dispatch, device);
+	if (fallback_dispatch_init_slots(dispatch, device) == -1) {
 		free(dispatch);
 		return NULL;
 	}
 
-	if (evdev_device->left_handed.want_enabled)
-		evdev_init_left_handed(evdev_device,
+	if (device->left_handed.want_enabled)
+		evdev_init_left_handed(device,
 				       evdev_change_to_left_handed);
 
-	if (evdev_device->scroll.want_button)
-		evdev_init_button_scroll(evdev_device,
+	if (device->scroll.want_button)
+		evdev_init_button_scroll(device,
 					 evdev_change_scroll_method);
 
-	if (evdev_device->scroll.natural_scrolling_enabled)
-		evdev_init_natural_scroll(evdev_device);
+	if (device->scroll.natural_scrolling_enabled)
+		evdev_init_natural_scroll(device);
 
-	evdev_init_calibration(evdev_device, &dispatch->calibration);
-	evdev_init_sendevents(evdev_device, &dispatch->base);
-	evdev_init_rotation(evdev_device, dispatch);
+	evdev_init_calibration(device, &dispatch->calibration);
+	evdev_init_sendevents(device, &dispatch->base);
+	evdev_init_rotation(device, dispatch);
 
 	/* BTN_MIDDLE is set on mice even when it's not present. So
 	 * we can only use the absence of BTN_MIDDLE to mean something, i.e.
 	 * we enable it by default on anything that only has L&R.
 	 * If we have L&R and no middle, we don't expose it as config
 	 * option */
-	if (libevdev_has_event_code(evdev_device->evdev, EV_KEY, BTN_LEFT) &&
-	    libevdev_has_event_code(evdev_device->evdev, EV_KEY, BTN_RIGHT)) {
-		bool has_middle = libevdev_has_event_code(evdev_device->evdev,
+	if (libevdev_has_event_code(device->evdev, EV_KEY, BTN_LEFT) &&
+	    libevdev_has_event_code(device->evdev, EV_KEY, BTN_RIGHT)) {
+		bool has_middle = libevdev_has_event_code(device->evdev,
 							  EV_KEY,
 							  BTN_MIDDLE);
 		bool want_config = has_middle;
 		bool enable_by_default = !has_middle;
 
-		evdev_init_middlebutton(evdev_device,
+		evdev_init_middlebutton(device,
 					enable_by_default,
 					want_config);
 	}
@@ -1952,7 +1952,7 @@ evdev_accel_config_available(struct libinput_device *device)
 static enum libinput_config_status
 evdev_accel_config_set_speed(struct libinput_device *device, double speed)
 {
-	struct evdev_device *dev = (struct evdev_device *)device;
+	struct evdev_device *dev = evdev_device(device);
 
 	if (!filter_set_speed(dev->pointer.filter, speed))
 		return LIBINPUT_CONFIG_STATUS_INVALID;
@@ -1963,7 +1963,7 @@ evdev_accel_config_set_speed(struct libinput_device *device, double speed)
 static double
 evdev_accel_config_get_speed(struct libinput_device *device)
 {
-	struct evdev_device *dev = (struct evdev_device *)device;
+	struct evdev_device *dev = evdev_device(device);
 
 	return filter_get_speed(dev->pointer.filter);
 }
@@ -1977,7 +1977,7 @@ evdev_accel_config_get_default_speed(struct libinput_device *device)
 static uint32_t
 evdev_accel_config_get_profiles(struct libinput_device *libinput_device)
 {
-	struct evdev_device *device = (struct evdev_device*)libinput_device;
+	struct evdev_device *device = evdev_device(libinput_device);
 
 	if (!device->pointer.filter)
 		return LIBINPUT_CONFIG_ACCEL_PROFILE_NONE;
@@ -1990,7 +1990,7 @@ static enum libinput_config_status
 evdev_accel_config_set_profile(struct libinput_device *libinput_device,
 			       enum libinput_config_accel_profile profile)
 {
-	struct evdev_device *device = (struct evdev_device*)libinput_device;
+	struct evdev_device *device = evdev_device(libinput_device);
 	struct motion_filter *filter;
 	double speed;
 
@@ -2014,7 +2014,7 @@ evdev_accel_config_set_profile(struct libinput_device *libinput_device,
 static enum libinput_config_accel_profile
 evdev_accel_config_get_profile(struct libinput_device *libinput_device)
 {
-	struct evdev_device *device = (struct evdev_device*)libinput_device;
+	struct evdev_device *device = evdev_device(libinput_device);
 
 	return filter_get_type(device->pointer.filter);
 }
@@ -2022,7 +2022,7 @@ evdev_accel_config_get_profile(struct libinput_device *libinput_device)
 static enum libinput_config_accel_profile
 evdev_accel_config_get_default_profile(struct libinput_device *libinput_device)
 {
-	struct evdev_device *device = (struct evdev_device*)libinput_device;
+	struct evdev_device *device = evdev_device(libinput_device);
 
 	if (!device->pointer.filter)
 		return LIBINPUT_CONFIG_ACCEL_PROFILE_NONE;
@@ -2698,7 +2698,7 @@ evdev_notify_added_device(struct evdev_device *device)
 	struct libinput_device *dev;
 
 	list_for_each(dev, &device->base.seat->devices_list, link) {
-		struct evdev_device *d = (struct evdev_device*)dev;
+		struct evdev_device *d = evdev_device(dev);
 		if (dev == &device->base)
 			continue;
 
@@ -3282,7 +3282,7 @@ evdev_notify_suspended_device(struct evdev_device *device)
 		return;
 
 	list_for_each(it, &device->base.seat->devices_list, link) {
-		struct evdev_device *d = (struct evdev_device*)it;
+		struct evdev_device *d = evdev_device(it);
 		if (it == &device->base)
 			continue;
 
@@ -3302,7 +3302,7 @@ evdev_notify_resumed_device(struct evdev_device *device)
 		return;
 
 	list_for_each(it, &device->base.seat->devices_list, link) {
-		struct evdev_device *d = (struct evdev_device*)it;
+		struct evdev_device *d = evdev_device(it);
 		if (it == &device->base)
 			continue;
 
@@ -3409,7 +3409,7 @@ evdev_device_remove(struct evdev_device *device)
 	struct libinput_device *dev;
 
 	list_for_each(dev, &device->base.seat->devices_list, link) {
-		struct evdev_device *d = (struct evdev_device*)dev;
+		struct evdev_device *d = evdev_device(dev);
 		if (dev == &device->base)
 			continue;
 
diff --git a/src/evdev.h b/src/evdev.h
index 924a4a1..462776d 100644
--- a/src/evdev.h
+++ b/src/evdev.h
@@ -237,6 +237,14 @@ struct evdev_device {
 	} middlebutton;
 };
 
+static inline struct evdev_device *
+evdev_device(struct libinput_device *device)
+{
+	struct evdev_device *d;
+
+	return container_of(device, d, base);
+}
+
 #define EVDEV_UNHANDLED_DEVICE ((struct evdev_device *) 1)
 
 struct evdev_dispatch;
diff --git a/src/libinput.c b/src/libinput.c
index ebfedec..84e329d 100644
--- a/src/libinput.c
+++ b/src/libinput.c
@@ -516,8 +516,7 @@ libinput_event_pointer_get_dy_unaccelerated(
 LIBINPUT_EXPORT double
 libinput_event_pointer_get_absolute_x(struct libinput_event_pointer *event)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -530,8 +529,7 @@ libinput_event_pointer_get_absolute_x(struct libinput_event_pointer *event)
 LIBINPUT_EXPORT double
 libinput_event_pointer_get_absolute_y(struct libinput_event_pointer *event)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -546,8 +544,7 @@ libinput_event_pointer_get_absolute_x_transformed(
 	struct libinput_event_pointer *event,
 	uint32_t width)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -562,8 +559,7 @@ libinput_event_pointer_get_absolute_y_transformed(
 	struct libinput_event_pointer *event,
 	uint32_t height)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -752,8 +748,7 @@ libinput_event_touch_get_seat_slot(struct libinput_event_touch *event)
 LIBINPUT_EXPORT double
 libinput_event_touch_get_x(struct libinput_event_touch *event)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -768,8 +763,7 @@ LIBINPUT_EXPORT double
 libinput_event_touch_get_x_transformed(struct libinput_event_touch *event,
 				       uint32_t width)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -784,8 +778,7 @@ LIBINPUT_EXPORT double
 libinput_event_touch_get_y_transformed(struct libinput_event_touch *event,
 				       uint32_t height)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -799,8 +792,7 @@ libinput_event_touch_get_y_transformed(struct libinput_event_touch *event,
 LIBINPUT_EXPORT double
 libinput_event_touch_get_y(struct libinput_event_touch *event)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -1110,8 +1102,7 @@ libinput_event_tablet_tool_wheel_has_changed(
 LIBINPUT_EXPORT double
 libinput_event_tablet_tool_get_x(struct libinput_event_tablet_tool *event)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -1128,8 +1119,7 @@ libinput_event_tablet_tool_get_x(struct libinput_event_tablet_tool *event)
 LIBINPUT_EXPORT double
 libinput_event_tablet_tool_get_y(struct libinput_event_tablet_tool *event)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -1277,8 +1267,7 @@ LIBINPUT_EXPORT double
 libinput_event_tablet_tool_get_x_transformed(struct libinput_event_tablet_tool *event,
 					uint32_t width)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -1297,8 +1286,7 @@ LIBINPUT_EXPORT double
 libinput_event_tablet_tool_get_y_transformed(struct libinput_event_tablet_tool *event,
 					uint32_t height)
 {
-	struct evdev_device *device =
-		(struct evdev_device *) event->base.device;
+	struct evdev_device *device = evdev_device(event->base.device);
 
 	require_event_type(libinput_event_get_context(&event->base),
 			   event->base.type,
@@ -1898,7 +1886,7 @@ static void
 libinput_device_destroy(struct libinput_device *device)
 {
 	assert(list_empty(&device->event_listeners));
-	evdev_device_destroy((struct evdev_device *) device);
+	evdev_device_destroy(evdev_device(device));
 }
 
 LIBINPUT_EXPORT struct libinput_device *
diff --git a/src/path-seat.c b/src/path-seat.c
index d806bfb..e6289a2 100644
--- a/src/path-seat.c
+++ b/src/path-seat.c
@@ -244,11 +244,11 @@ path_device_change_seat(struct libinput_device *device,
 			const char *seat_name)
 {
 	struct libinput *libinput = device->seat->libinput;
-	struct evdev_device *evdev_device = (struct evdev_device *)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct udev_device *udev_device = NULL;
 	int rc = -1;
 
-	udev_device = evdev_device->udev_device;
+	udev_device = evdev->udev_device;
 	udev_device_ref(udev_device);
 	libinput_path_remove_device(device);
 
@@ -361,7 +361,7 @@ libinput_path_remove_device(struct libinput_device *device)
 	struct libinput *libinput = device->seat->libinput;
 	struct path_input *input = (struct path_input*)libinput;
 	struct libinput_seat *seat;
-	struct evdev_device *evdev = (struct evdev_device*)device;
+	struct evdev_device *evdev = evdev_device(device);
 	struct path_device *dev;
 
 	if (libinput->interface_backend != &interface_backend) {
diff --git a/src/udev-seat.c b/src/udev-seat.c
index d1eaed8..a19afb4 100644
--- a/src/udev-seat.c
+++ b/src/udev-seat.c
@@ -322,8 +322,8 @@ udev_device_change_seat(struct libinput_device *device,
 {
 	struct libinput *libinput = device->seat->libinput;
 	struct udev_input *input = (struct udev_input *)libinput;
-	struct evdev_device *evdev_device = (struct evdev_device *)device;
-	struct udev_device *udev_device = evdev_device->udev_device;
+	struct evdev_device *evdev = evdev_device(device);
+	struct udev_device *udev_device = evdev->udev_device;
 	int rc;
 
 	udev_device_ref(udev_device);
-- 
2.9.3



More information about the wayland-devel mailing list