diff --git a/clutter/clutter/clutter-backend.c b/clutter/clutter/clutter-backend.c index 8b93c817d..4652bc7b8 100644 --- a/clutter/clutter/clutter-backend.c +++ b/clutter/clutter/clutter-backend.c @@ -62,9 +62,6 @@ #ifdef CLUTTER_INPUT_X11 #include "x11/clutter-backend-x11.h" #endif -#ifdef CLUTTER_INPUT_EVDEV -#include "evdev/clutter-device-manager-evdev.h" -#endif #ifdef CLUTTER_WINDOWING_EGL #include "egl/clutter-backend-eglnative.h" #endif @@ -528,32 +525,7 @@ _clutter_create_backend (void) static void clutter_backend_real_init_events (ClutterBackend *backend) { - const char *input_backend = NULL; - - input_backend = g_getenv ("CLUTTER_INPUT_BACKEND"); - if (input_backend != NULL) - input_backend = g_intern_string (input_backend); - -#ifdef CLUTTER_INPUT_EVDEV - /* Evdev can be used regardless of the windowing system */ - if ((input_backend != NULL && strcmp (input_backend, CLUTTER_INPUT_EVDEV) == 0) -#ifdef CLUTTER_WINDOWING_EGL - /* but we do want to always use it for EGL native */ - || clutter_check_windowing_backend (CLUTTER_WINDOWING_EGL) -#endif - ) - { - _clutter_events_evdev_init (backend); - } - else -#endif - if (input_backend != NULL) - { - if (input_backend != I_(CLUTTER_INPUT_NULL)) - g_error ("Unrecognized input backend '%s'", input_backend); - } - else - g_error ("Unknown input backend"); + g_error ("Unknown input backend"); } static ClutterDeviceManager * diff --git a/clutter/clutter/clutter-event-private.h b/clutter/clutter/clutter-event-private.h index cd840e9a0..668be6ef9 100644 --- a/clutter/clutter/clutter-event-private.h +++ b/clutter/clutter/clutter-event-private.h @@ -10,8 +10,10 @@ void _clutter_event_set_pointer_emulated (ClutterEvent *eve gboolean is_emulated); /* Reinjecting queued events for processing */ +CLUTTER_EXPORT void _clutter_process_event (ClutterEvent *event); +CLUTTER_EXPORT gboolean _clutter_event_process_filters (ClutterEvent *event); /* clears the event queue inside the main context */ diff --git a/clutter/clutter/clutter-virtual-input-device.h b/clutter/clutter/clutter-virtual-input-device.h index 3e25dbeac..450accda2 100644 --- a/clutter/clutter/clutter-virtual-input-device.h +++ b/clutter/clutter/clutter-virtual-input-device.h @@ -172,6 +172,7 @@ void clutter_virtual_input_device_notify_touch_up (ClutterVirtualInputDevice *vi CLUTTER_EXPORT ClutterDeviceManager * clutter_virtual_input_device_get_manager (ClutterVirtualInputDevice *virtual_device); +CLUTTER_EXPORT int clutter_virtual_input_device_get_device_type (ClutterVirtualInputDevice *virtual_device); #endif /* __CLUTTER_VIRTUAL_INPUT_DEVICE_H__ */ diff --git a/clutter/clutter/egl/clutter-backend-eglnative.c b/clutter/clutter/egl/clutter-backend-eglnative.c index 997298734..727dd4418 100644 --- a/clutter/clutter/egl/clutter-backend-eglnative.c +++ b/clutter/clutter/egl/clutter-backend-eglnative.c @@ -40,10 +40,6 @@ /* This is a Cogl based backend */ #include "cogl/clutter-stage-cogl.h" -#ifdef HAVE_EVDEV -#include "evdev/clutter-device-manager-evdev.h" -#endif - #include "clutter-debug.h" #include "clutter-private.h" #include "clutter-main.h" diff --git a/clutter/clutter/evdev/clutter-device-manager-evdev.h b/clutter/clutter/evdev/clutter-device-manager-evdev.h deleted file mode 100644 index 092895ed7..000000000 --- a/clutter/clutter/evdev/clutter-device-manager-evdev.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * - * Copyright (C) 2010 Intel Corp. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * Author: Damien Lespiau - */ - -#ifndef __CLUTTER_DEVICE_MANAGER_EVDEV_H__ -#define __CLUTTER_DEVICE_MANAGER_EVDEV_H__ - -#include -#include - -G_BEGIN_DECLS - -#define CLUTTER_TYPE_DEVICE_MANAGER_EVDEV (clutter_device_manager_evdev_get_type ()) -#define CLUTTER_DEVICE_MANAGER_EVDEV(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_DEVICE_MANAGER_EVDEV, ClutterDeviceManagerEvdev)) -#define CLUTTER_IS_DEVICE_MANAGER_EVDEV(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_DEVICE_MANAGER_EVDEV)) -#define CLUTTER_DEVICE_MANAGER_EVDEV_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_DEVICE_MANAGER_EVDEV, ClutterDeviceManagerEvdevClass)) -#define CLUTTER_IS_DEVICE_MANAGER_EVDEV_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_DEVICE_MANAGER_EVDEV)) -#define CLUTTER_DEVICE_MANAGER_EVDEV_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_DEVICE_MANAGER_EVDEV, ClutterDeviceManagerEvdevClass)) - -typedef struct _ClutterDeviceManagerEvdev ClutterDeviceManagerEvdev; -typedef struct _ClutterDeviceManagerEvdevClass ClutterDeviceManagerEvdevClass; -typedef struct _ClutterDeviceManagerEvdevPrivate ClutterDeviceManagerEvdevPrivate; - -typedef struct _ClutterSeatEvdev ClutterSeatEvdev; - -struct _ClutterDeviceManagerEvdev -{ - ClutterDeviceManager parent_instance; - - ClutterDeviceManagerEvdevPrivate *priv; -}; - -struct _ClutterDeviceManagerEvdevClass -{ - ClutterDeviceManagerClass parent_class; -}; - -GType clutter_device_manager_evdev_get_type (void) G_GNUC_CONST; - -void _clutter_events_evdev_init (ClutterBackend *backend); -void _clutter_events_evdev_uninit (ClutterBackend *backend); - -gint _clutter_device_manager_evdev_acquire_device_id (ClutterDeviceManagerEvdev *manager_evdev); - -void _clutter_device_manager_evdev_release_device_id (ClutterDeviceManagerEvdev *manager_evdev, - ClutterInputDevice *device); - -ClutterStage * _clutter_device_manager_evdev_get_stage (ClutterDeviceManagerEvdev *manager_evdev); - -void _clutter_device_manager_evdev_constrain_pointer (ClutterDeviceManagerEvdev *manager_evdev, - ClutterInputDevice *core_pointer, - uint64_t time_us, - float x, - float y, - float *new_x, - float *new_y); - -void _clutter_device_manager_evdev_filter_relative_motion (ClutterDeviceManagerEvdev *manager_evdev, - ClutterInputDevice *device, - float x, - float y, - float *dx, - float *dy); - -void _clutter_device_manager_evdev_dispatch (ClutterDeviceManagerEvdev *manager_evdev); - -struct xkb_state * _clutter_device_manager_evdev_get_xkb_state (ClutterDeviceManagerEvdev *manager_evdev); - -static inline guint64 -us (guint64 us) -{ - return us; -} - -static inline guint64 -ms2us (guint64 ms) -{ - return us (ms * 1000); -} - -static inline guint32 -us2ms (guint64 us) -{ - return (guint32) (us / 1000); -} - -G_END_DECLS - -#endif /* __CLUTTER_DEVICE_MANAGER_EVDEV_H__ */ diff --git a/clutter/clutter/evdev/clutter-evdev.h b/clutter/clutter/evdev/clutter-evdev.h deleted file mode 100644 index ccb7b71cb..000000000 --- a/clutter/clutter/evdev/clutter-evdev.h +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * - * Copyright (C) 2012 Intel Corp. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * - */ - -#ifndef __CLUTTER_EVDEV_H__ -#define __CLUTTER_EVDEV_H__ - -#include -#include -#include -#include -#include - -G_BEGIN_DECLS - -#if !defined(CLUTTER_ENABLE_COMPOSITOR_API) && !defined(CLUTTER_COMPILATION) -#error "You need to define CLUTTER_ENABLE_COMPOSITOR_API before including clutter-evdev.h" -#endif - -/** - * ClutterOpenDeviceCallback: - * @path: the device path - * @flags: flags to be passed to open - * - * This callback will be called when Clutter needs to access an input - * device. It should return an open file descriptor for the file at @path, - * or -1 if opening failed. - */ -typedef int (*ClutterOpenDeviceCallback) (const char *path, - int flags, - gpointer user_data, - GError **error); -typedef void (*ClutterCloseDeviceCallback) (int fd, - gpointer user_data); - -CLUTTER_EXPORT -void clutter_evdev_set_device_callbacks (ClutterOpenDeviceCallback open_callback, - ClutterCloseDeviceCallback close_callback, - gpointer user_data); - -CLUTTER_EXPORT -void clutter_evdev_set_seat_id (const gchar *seat_id); - -CLUTTER_EXPORT -void clutter_evdev_release_devices (void); -CLUTTER_EXPORT -void clutter_evdev_reclaim_devices (void); - -/** - * ClutterPointerConstrainCallback: - * @device: the core pointer device - * @time: the event time in milliseconds - * @x: (inout): the new X coordinate - * @y: (inout): the new Y coordinate - * @user_data: user data passed to this function - * - * This callback will be called for all pointer motion events, and should - * update (@x, @y) to constrain the pointer position appropriately. - * The subsequent motion event will use the updated values as the new coordinates. - * Note that the coordinates are not clamped to the stage size, and the callback - * must make sure that this happens before it returns. - * Also note that the event will be emitted even if the pointer is constrained - * to be in the same position. - * - * Since: 1.16 - */ -typedef void (*ClutterPointerConstrainCallback) (ClutterInputDevice *device, - guint32 time, - float prev_x, - float prev_y, - float *x, - float *y, - gpointer user_data); - -CLUTTER_EXPORT -void clutter_evdev_set_pointer_constrain_callback (ClutterDeviceManager *evdev, - ClutterPointerConstrainCallback callback, - gpointer user_data, - GDestroyNotify user_data_notify); - -typedef void (*ClutterRelativeMotionFilter) (ClutterInputDevice *device, - float x, - float y, - float *dx, - float *dy, - gpointer user_data); - -CLUTTER_EXPORT -void clutter_evdev_set_relative_motion_filter (ClutterDeviceManager *evdev, - ClutterRelativeMotionFilter filter, - gpointer user_data); - -CLUTTER_EXPORT -void clutter_evdev_set_keyboard_map (ClutterDeviceManager *evdev, - struct xkb_keymap *keymap); - -CLUTTER_EXPORT -struct xkb_keymap * clutter_evdev_get_keyboard_map (ClutterDeviceManager *evdev); - -CLUTTER_EXPORT -void clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev, - xkb_layout_index_t idx); - -CLUTTER_EXPORT -xkb_layout_index_t clutter_evdev_get_keyboard_layout_index (ClutterDeviceManager *evdev); - -CLUTTER_EXPORT -void clutter_evdev_set_keyboard_numlock (ClutterDeviceManager *evdev, - gboolean numlock_state); - -CLUTTER_EXPORT -void clutter_evdev_set_keyboard_repeat (ClutterDeviceManager *evdev, - gboolean repeat, - guint32 delay, - guint32 interval); - -typedef gboolean (* ClutterEvdevFilterFunc) (struct libinput_event *event, - gpointer data); - -CLUTTER_EXPORT -void clutter_evdev_add_filter (ClutterEvdevFilterFunc func, - gpointer data, - GDestroyNotify destroy_notify); -CLUTTER_EXPORT -void clutter_evdev_remove_filter (ClutterEvdevFilterFunc func, - gpointer data); -CLUTTER_EXPORT -struct libinput_device * clutter_evdev_input_device_get_libinput_device (ClutterInputDevice *device); - -CLUTTER_EXPORT -gint32 clutter_evdev_event_sequence_get_slot (const ClutterEventSequence *sequence); - -CLUTTER_EXPORT -void clutter_evdev_warp_pointer (ClutterInputDevice *pointer_device, - guint32 time_, - int x, - int y); - -CLUTTER_EXPORT -guint32 clutter_evdev_event_get_event_code (const ClutterEvent *event); - -CLUTTER_EXPORT -guint64 clutter_evdev_event_get_time_usec (const ClutterEvent *event); - -CLUTTER_EXPORT -gboolean clutter_evdev_event_get_relative_motion (const ClutterEvent *event, - double *dx, - double *dy, - double *dx_unaccel, - double *dy_unaccel); - -CLUTTER_EXPORT -void clutter_evdev_input_device_tool_set_pressure_curve (ClutterInputDeviceTool *tool, - gdouble curve[4]); -CLUTTER_EXPORT -void clutter_evdev_input_device_tool_set_button_code (ClutterInputDeviceTool *tool, - guint button, - guint evcode); - -G_END_DECLS - -#endif /* __CLUTTER_EVDEV_H__ */ diff --git a/clutter/clutter/evdev/clutter-event-evdev.c b/clutter/clutter/evdev/clutter-event-evdev.c deleted file mode 100644 index 737859dd4..000000000 --- a/clutter/clutter/evdev/clutter-event-evdev.c +++ /dev/null @@ -1,191 +0,0 @@ -/* Clutter. - * An OpenGL based 'interactive canvas' library. - * - * Copyright (C) 2015 Red Hat - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * Authored by: - * Carlos Garnacho - */ - -#include "clutter-build-config.h" - -#include "clutter/clutter-device-manager-private.h" -#include "clutter/clutter-event-private.h" -#include "clutter-input-device-evdev.h" -#include "clutter-evdev.h" - -typedef struct _ClutterEventEvdev ClutterEventEvdev; - -struct _ClutterEventEvdev -{ - guint32 evcode; - - guint64 time_usec; - - gboolean has_relative_motion; - double dx; - double dy; - double dx_unaccel; - double dy_unaccel; -}; - -static ClutterEventEvdev * -_clutter_event_evdev_new (void) -{ - return g_slice_new0 (ClutterEventEvdev); -} - -ClutterEventEvdev * -_clutter_event_evdev_copy (ClutterEventEvdev *event_evdev) -{ - if (event_evdev != NULL) - return g_slice_dup (ClutterEventEvdev, event_evdev); - - return NULL; -} - -void -_clutter_event_evdev_free (ClutterEventEvdev *event_evdev) -{ - if (event_evdev != NULL) - g_slice_free (ClutterEventEvdev, event_evdev); -} - -static ClutterEventEvdev * -clutter_evdev_event_ensure_platform_data (ClutterEvent *event) -{ - ClutterEventEvdev *event_evdev = _clutter_event_get_platform_data (event); - - if (!event_evdev) - { - event_evdev = _clutter_event_evdev_new (); - _clutter_event_set_platform_data (event, event_evdev); - } - - return event_evdev; -} - -void -_clutter_evdev_event_set_event_code (ClutterEvent *event, - guint32 evcode) -{ - ClutterEventEvdev *event_evdev; - - event_evdev = clutter_evdev_event_ensure_platform_data (event); - event_evdev->evcode = evcode; -} - -void -_clutter_evdev_event_set_time_usec (ClutterEvent *event, - guint64 time_usec) -{ - ClutterEventEvdev *event_evdev; - - event_evdev = clutter_evdev_event_ensure_platform_data (event); - event_evdev->time_usec = time_usec; -} - -void -_clutter_evdev_event_set_relative_motion (ClutterEvent *event, - double dx, - double dy, - double dx_unaccel, - double dy_unaccel) -{ - ClutterEventEvdev *event_evdev; - - event_evdev = clutter_evdev_event_ensure_platform_data (event); - event_evdev->dx = dx; - event_evdev->dy = dy; - event_evdev->dx_unaccel = dx_unaccel; - event_evdev->dy_unaccel = dy_unaccel; - event_evdev->has_relative_motion = TRUE; -} - -/** - * clutter_evdev_event_get_event_code: - * @event: a #ClutterEvent - * - * Returns the event code of the original event. See linux/input.h for more - * information. - * - * Returns: The event code. - **/ -guint32 -clutter_evdev_event_get_event_code (const ClutterEvent *event) -{ - ClutterEventEvdev *event_evdev = _clutter_event_get_platform_data (event); - - if (event_evdev) - return event_evdev->evcode; - - return 0; -} - -/** - * clutter_evdev_event_get_time_usec: - * @event: a #ClutterEvent - * - * Returns the time in microsecond granularity, or 0 if unavailable. - * - * Returns: The time in microsecond granularity, or 0 if unavailable. - */ -guint64 -clutter_evdev_event_get_time_usec (const ClutterEvent *event) -{ - ClutterEventEvdev *event_evdev = _clutter_event_get_platform_data (event); - - if (event_evdev) - return event_evdev->time_usec; - - return 0; -} - -/** - * clutter_evdev_event_get_pointer_motion - * @event: a #ClutterEvent - * - * If available, the normal and unaccelerated motion deltas are written - * to the dx, dy, dx_unaccel and dy_unaccel and TRUE is returned. - * - * If unavailable, FALSE is returned. - * - * Returns: TRUE on success, otherwise FALSE. - **/ -gboolean -clutter_evdev_event_get_relative_motion (const ClutterEvent *event, - double *dx, - double *dy, - double *dx_unaccel, - double *dy_unaccel) -{ - ClutterEventEvdev *event_evdev = _clutter_event_get_platform_data (event); - - if (event_evdev && event_evdev->has_relative_motion) - { - if (dx) - *dx = event_evdev->dx; - if (dy) - *dy = event_evdev->dy; - if (dx_unaccel) - *dx_unaccel = event_evdev->dx_unaccel; - if (dy_unaccel) - *dy_unaccel = event_evdev->dy_unaccel; - return TRUE; - } - else - return FALSE; -} diff --git a/clutter/clutter/evdev/clutter-input-device-evdev.h b/clutter/clutter/evdev/clutter-input-device-evdev.h deleted file mode 100644 index f4515a7d3..000000000 --- a/clutter/clutter/evdev/clutter-input-device-evdev.h +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * - * Copyright (C) 2010 Intel Corp. - * Copyright (C) 2014 Jonas Ådahl - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * Author: Damien Lespiau - * Author: Jonas Ådahl - */ - -#ifndef __CLUTTER_INPUT_DEVICE_EVDEV_H__ -#define __CLUTTER_INPUT_DEVICE_EVDEV_H__ - -#include -#include - -#include "clutter/clutter-device-manager-private.h" -#include "evdev/clutter-seat-evdev.h" - -G_BEGIN_DECLS - -#define CLUTTER_TYPE_INPUT_DEVICE_EVDEV _clutter_input_device_evdev_get_type() - -#define CLUTTER_INPUT_DEVICE_EVDEV(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - CLUTTER_TYPE_INPUT_DEVICE_EVDEV, ClutterInputDeviceEvdev)) - -#define CLUTTER_INPUT_DEVICE_EVDEV_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), \ - CLUTTER_TYPE_INPUT_DEVICE_EVDEV, ClutterInputDeviceEvdevClass)) - -#define CLUTTER_IS_INPUT_DEVICE_EVDEV(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - CLUTTER_TYPE_INPUT_DEVICE_EVDEV)) - -#define CLUTTER_IS_INPUT_DEVICE_EVDEV_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - CLUTTER_TYPE_INPUT_DEVICE_EVDEV)) - -#define CLUTTER_INPUT_DEVICE_EVDEV_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - CLUTTER_TYPE_INPUT_DEVICE_EVDEV, ClutterInputDeviceEvdevClass)) - -typedef struct _ClutterInputDeviceEvdev ClutterInputDeviceEvdev; -typedef struct _ClutterEventEvdev ClutterEventEvdev; - -struct _ClutterInputDeviceEvdev -{ - ClutterInputDevice parent; - - struct libinput_device *libinput_device; - ClutterSeatEvdev *seat; - ClutterInputDeviceTool *last_tool; - - cairo_matrix_t device_matrix; - gdouble device_aspect_ratio; /* w:h */ - gdouble output_ratio; /* w:h */ - - GHashTable *touches; - - /* Keyboard a11y */ - ClutterKeyboardA11yFlags a11y_flags; - GList *slow_keys_list; - guint debounce_timer; - guint16 debounce_key; - xkb_mod_mask_t stickykeys_depressed_mask; - xkb_mod_mask_t stickykeys_latched_mask; - xkb_mod_mask_t stickykeys_locked_mask; - guint toggle_slowkeys_timer; - guint16 shift_count; - guint32 last_shift_time; - gint mousekeys_btn; - gboolean mousekeys_btn_states[3]; - guint32 mousekeys_first_motion_time; /* ms */ - guint32 mousekeys_last_motion_time; /* ms */ - guint mousekeys_init_delay; - guint mousekeys_accel_time; - guint mousekeys_max_speed; - gdouble mousekeys_curve_factor; - guint move_mousekeys_timer; - guint16 last_mousekeys_key; -}; - -GType _clutter_input_device_evdev_get_type (void) G_GNUC_CONST; - -ClutterInputDevice * _clutter_input_device_evdev_new (ClutterDeviceManager *manager, - ClutterSeatEvdev *seat, - struct libinput_device *libinput_device); - -ClutterInputDevice * _clutter_input_device_evdev_new_virtual (ClutterDeviceManager *manager, - ClutterSeatEvdev *seat, - ClutterInputDeviceType type, - ClutterInputMode mode); - -ClutterSeatEvdev * _clutter_input_device_evdev_get_seat (ClutterInputDeviceEvdev *device); - -void _clutter_input_device_evdev_update_leds (ClutterInputDeviceEvdev *device, - enum libinput_led leds); - -ClutterInputDeviceType _clutter_input_device_evdev_determine_type (struct libinput_device *libinput_device); - - -ClutterEventEvdev * _clutter_event_evdev_copy (ClutterEventEvdev *event_evdev); -void _clutter_event_evdev_free (ClutterEventEvdev *event_evdev); - -void _clutter_evdev_event_set_event_code (ClutterEvent *event, - guint32 evcode); - -void _clutter_evdev_event_set_time_usec (ClutterEvent *event, - guint64 time_usec); - -void _clutter_evdev_event_set_relative_motion (ClutterEvent *event, - double dx, - double dy, - double dx_unaccel, - double dy_unaccel); - -void clutter_input_device_evdev_translate_coordinates (ClutterInputDevice *device, - ClutterStage *stage, - gfloat *x, - gfloat *y); - -void clutter_input_device_evdev_apply_kbd_a11y_settings (ClutterInputDeviceEvdev *device, - ClutterKbdA11ySettings *settings); - -ClutterTouchState * clutter_input_device_evdev_acquire_touch_state (ClutterInputDeviceEvdev *device, - int device_slot); - -ClutterTouchState * clutter_input_device_evdev_lookup_touch_state (ClutterInputDeviceEvdev *device, - int device_slot); - -void clutter_input_device_evdev_release_touch_state (ClutterInputDeviceEvdev *device, - ClutterTouchState *touch_state); - -void clutter_input_device_evdev_release_touch_slots (ClutterInputDeviceEvdev *device_evdev, - uint64_t time_us); - -void clutter_evdev_a11y_maybe_notify_toggle_keys (ClutterInputDeviceEvdev *); - -G_END_DECLS - -#endif /* __CLUTTER_INPUT_DEVICE_EVDEV_H__ */ diff --git a/clutter/clutter/evdev/clutter-input-device-tool-evdev.h b/clutter/clutter/evdev/clutter-input-device-tool-evdev.h deleted file mode 100644 index 91eaf8e04..000000000 --- a/clutter/clutter/evdev/clutter-input-device-tool-evdev.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * - * Copyright © 2009, 2010, 2011 Intel Corp. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * Author: Carlos Garnacho - */ - -#ifndef __CLUTTER_INPUT_DEVICE_EVDEV_TOOL_H__ -#define __CLUTTER_INPUT_DEVICE_EVDEV_TOOL_H__ - -#include - -#include - -G_BEGIN_DECLS - -#define CLUTTER_TYPE_INPUT_DEVICE_TOOL_EVDEV (clutter_input_device_tool_evdev_get_type ()) - -#define CLUTTER_INPUT_DEVICE_TOOL_EVDEV(o) \ - (G_TYPE_CHECK_INSTANCE_CAST ((o), \ - CLUTTER_TYPE_INPUT_DEVICE_TOOL_EVDEV, ClutterInputDeviceToolEvdev)) - -#define CLUTTER_IS_INPUT_DEVICE_TOOL_EVDEV(o) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((o), \ - CLUTTER_TYPE_INPUT_DEVICE_TOOL_EVDEV)) - -#define CLUTTER_INPUT_DEVICE_TOOL_EVDEV_CLASS(c) \ - (G_TYPE_CHECK_CLASS_CAST ((c), \ - CLUTTER_TYPE_INPUT_DEVICE_TOOL_EVDEV, ClutterInputDeviceToolEvdevClass)) - -#define CLUTTER_IS_INPUT_DEVICE_TOOL_EVDEV_CLASS(c) \ - (G_TYPE_CHECK_CLASS_TYPE ((c), \ - CLUTTER_TYPE_INPUT_DEVICE_TOOL_EVDEV)) - -#define CLUTTER_INPUT_DEVICE_TOOL_EVDEV_GET_CLASS(o) \ - (G_TYPE_INSTANCE_GET_CLASS ((o), \ - CLUTTER_TYPE_INPUT_DEVICE_TOOL_EVDEV, ClutterInputDeviceToolEvdevClass)) - -typedef struct _ClutterInputDeviceToolEvdev ClutterInputDeviceToolEvdev; -typedef struct _ClutterInputDeviceToolEvdevClass ClutterInputDeviceToolEvdevClass; - -struct _ClutterInputDeviceToolEvdev -{ - ClutterInputDeviceTool parent_instance; - struct libinput_tablet_tool *tool; - GHashTable *button_map; - gdouble pressure_curve[4]; -}; - -struct _ClutterInputDeviceToolEvdevClass -{ - ClutterInputDeviceToolClass parent_class; -}; - -GType clutter_input_device_tool_evdev_get_type (void) G_GNUC_CONST; - -ClutterInputDeviceTool * clutter_input_device_tool_evdev_new (struct libinput_tablet_tool *tool, - guint64 serial, - ClutterInputDeviceToolType type); - -gdouble clutter_input_device_tool_evdev_translate_pressure (ClutterInputDeviceTool *tool, - gdouble pressure); -guint clutter_input_device_tool_evdev_get_button_code (ClutterInputDeviceTool *tool, - guint button); - -G_END_DECLS - -#endif /* __CLUTTER_INPUT_DEVICE_EVDEV_TOOL_H__ */ diff --git a/clutter/clutter/evdev/clutter-seat-evdev.h b/clutter/clutter/evdev/clutter-seat-evdev.h deleted file mode 100644 index 4bb319b3a..000000000 --- a/clutter/clutter/evdev/clutter-seat-evdev.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * - * Copyright (C) 2010 Intel Corp. - * Copyright (C) 2014 Jonas Ådahl - * Copyright (C) 2016 Red Hat Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * Author: Damien Lespiau - * Author: Jonas Ådahl - */ - -#ifndef __CLUTTER_SEAT_EVDEV_H__ -#define __CLUTTER_SEAT_EVDEV_H__ - -#include -#include - -#include "clutter-input-device.h" -#include "clutter-device-manager-evdev.h" -#include "clutter-xkb-utils.h" - -typedef struct _ClutterTouchState ClutterTouchState; - -struct _ClutterTouchState -{ - ClutterSeatEvdev *seat; - - int device_slot; - int seat_slot; - ClutterPoint coords; -}; - -struct _ClutterSeatEvdev -{ - struct libinput_seat *libinput_seat; - ClutterDeviceManagerEvdev *manager_evdev; - - GSList *devices; - - ClutterInputDevice *core_pointer; - ClutterInputDevice *core_keyboard; - - ClutterTouchState **touch_states; - int n_alloc_touch_states; - - struct xkb_state *xkb; - xkb_led_index_t caps_lock_led; - xkb_led_index_t num_lock_led; - xkb_led_index_t scroll_lock_led; - xkb_layout_index_t layout_idx; - uint32_t button_state; - int button_count[KEY_CNT]; - - /* keyboard repeat */ - gboolean repeat; - guint32 repeat_delay; - guint32 repeat_interval; - guint32 repeat_key; - guint32 repeat_count; - guint32 repeat_timer; - ClutterInputDevice *repeat_device; - - gfloat pointer_x; - gfloat pointer_y; - - /* Emulation of discrete scroll events out of smooth ones */ - gfloat accum_scroll_dx; - gfloat accum_scroll_dy; -}; - -void clutter_seat_evdev_notify_key (ClutterSeatEvdev *seat, - ClutterInputDevice *device, - uint64_t time_us, - uint32_t key, - uint32_t state, - gboolean update_keys); - -void clutter_seat_evdev_notify_relative_motion (ClutterSeatEvdev *seat_evdev, - ClutterInputDevice *input_device, - uint64_t time_us, - float dx, - float dy, - float dx_unaccel, - float dy_unaccel); - -void clutter_seat_evdev_notify_absolute_motion (ClutterSeatEvdev *seat_evdev, - ClutterInputDevice *input_device, - uint64_t time_us, - float x, - float y, - double *axes); - -void clutter_seat_evdev_notify_button (ClutterSeatEvdev *seat, - ClutterInputDevice *input_device, - uint64_t time_us, - uint32_t button, - uint32_t state); - -void clutter_seat_evdev_notify_scroll_continuous (ClutterSeatEvdev *seat, - ClutterInputDevice *input_device, - uint64_t time_us, - double dx, - double dy, - ClutterScrollSource source, - ClutterScrollFinishFlags flags); - -void clutter_seat_evdev_notify_discrete_scroll (ClutterSeatEvdev *seat, - ClutterInputDevice *input_device, - uint64_t time_us, - double discrete_dx, - double discrete_dy, - ClutterScrollSource source); - -void clutter_seat_evdev_notify_touch_event (ClutterSeatEvdev *seat, - ClutterInputDevice *input_device, - ClutterEventType evtype, - uint64_t time_us, - int slot, - double x, - double y); - -void clutter_seat_evdev_set_libinput_seat (ClutterSeatEvdev *seat, - struct libinput_seat *libinput_seat); - -void clutter_seat_evdev_sync_leds (ClutterSeatEvdev *seat); - -ClutterInputDevice * clutter_seat_evdev_get_device (ClutterSeatEvdev *seat, - gint id); - -ClutterTouchState * clutter_seat_evdev_acquire_touch_state (ClutterSeatEvdev *seat, - int device_slot); - -void clutter_seat_evdev_release_touch_state (ClutterSeatEvdev *seat, - ClutterTouchState *touch_state); - -ClutterTouchState * clutter_seat_evdev_get_touch (ClutterSeatEvdev *seat, - guint32 id); - -void clutter_seat_evdev_set_stage (ClutterSeatEvdev *seat, - ClutterStage *stage); - -void clutter_seat_evdev_clear_repeat_timer (ClutterSeatEvdev *seat); - -ClutterSeatEvdev * clutter_seat_evdev_new (ClutterDeviceManagerEvdev *manager_evdev); - -void clutter_seat_evdev_free (ClutterSeatEvdev *seat); - -#endif /* __CLUTTER_SEAT_EVDEV_H__ */ diff --git a/clutter/clutter/evdev/clutter-xkb-utils.h b/clutter/clutter/evdev/clutter-xkb-utils.h deleted file mode 100644 index ae057dd6f..000000000 --- a/clutter/clutter/evdev/clutter-xkb-utils.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * - * Copyright (C) 2010 Intel Corporation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - - * Authors: - * Damien Lespiau - */ - -#ifndef __CLUTTER_XKB_UTILS_H__ -#define __CLUTTER_XKB_UTILS_H__ - -#include - -#include "clutter-stage.h" -#include "clutter-event.h" -#include "clutter-input-device.h" - -ClutterEvent * _clutter_key_event_new_from_evdev (ClutterInputDevice *device, - ClutterInputDevice *core_keyboard, - ClutterStage *stage, - struct xkb_state *xkb_state, - uint32_t button_state, - uint32_t _time, - uint32_t key, - uint32_t state); -void _clutter_xkb_translate_state (ClutterEvent *event, - struct xkb_state *xkb_state, - uint32_t button_state); - -#endif /* __CLUTTER_XKB_UTILS_H__ */ diff --git a/clutter/clutter/meson.build b/clutter/clutter/meson.build index 9fa1c4dad..7a247632d 100644 --- a/clutter/clutter/meson.build +++ b/clutter/clutter/meson.build @@ -297,28 +297,8 @@ endif if have_native_backend clutter_native_nonintrospected_sources = [ 'egl/clutter-backend-eglnative.c', - 'evdev/clutter-device-manager-evdev.c', - 'evdev/clutter-event-evdev.c', - 'evdev/clutter-input-device-evdev.c', - 'evdev/clutter-input-device-tool-evdev.c', - 'evdev/clutter-keymap-evdev.c', - 'evdev/clutter-seat-evdev.c', - 'evdev/clutter-virtual-input-device-evdev.c', - 'evdev/clutter-xkb-utils.c', ] clutter_backend_nonintrospected_sources += clutter_native_nonintrospected_sources - - clutter_native_private_headers = [ - 'evdev/clutter-evdev.h', - 'evdev/clutter-device-manager-evdev.h', - 'evdev/clutter-input-device-evdev.h', - 'evdev/clutter-input-device-tool-evdev.h', - 'evdev/clutter-keymap-evdev.h', - 'evdev/clutter-seat-evdev.h', - 'evdev/clutter-virtual-input-device-evdev.h', - 'evdev/clutter-xkb-utils.h', - ] - clutter_backend_private_headers += clutter_native_private_headers endif if have_wayland diff --git a/clutter/meson.build b/clutter/meson.build index f3435b55e..bd9f06e74 100644 --- a/clutter/meson.build +++ b/clutter/meson.build @@ -71,14 +71,6 @@ if have_x11 ] endif -if have_native_backend - clutter_pkg_private_deps += [ - libudev_dep, - libinput_dep, - xkbcommon_dep, - ] -endif - if have_libwacom clutter_pkg_private_deps += [ libwacom_dep, diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c index d285d61f2..4df2d5235 100644 --- a/src/backends/native/meta-backend-native.c +++ b/src/backends/native/meta-backend-native.c @@ -50,6 +50,8 @@ #include "backends/native/meta-barrier-native.h" #include "backends/native/meta-clutter-backend-native.h" #include "backends/native/meta-cursor-renderer-native.h" +#include "backends/native/meta-device-manager-native.h" +#include "backends/native/meta-event-native.h" #include "backends/native/meta-input-settings-native.h" #include "backends/native/meta-kms.h" #include "backends/native/meta-kms-device.h" @@ -57,7 +59,6 @@ #include "backends/native/meta-monitor-manager-kms.h" #include "backends/native/meta-renderer-native.h" #include "backends/native/meta-stage-native.h" -#include "clutter/evdev/clutter-evdev.h" #include "core/meta-border.h" #include "meta/main.h" @@ -343,10 +344,10 @@ meta_backend_native_post_init (MetaBackend *backend) META_BACKEND_CLASS (meta_backend_native_parent_class)->post_init (backend); - clutter_evdev_set_pointer_constrain_callback (manager, pointer_constrain_callback, - NULL, NULL); - clutter_evdev_set_relative_motion_filter (manager, relative_motion_filter, - meta_backend_get_monitor_manager (backend)); + meta_device_manager_native_set_pointer_constrain_callback (manager, pointer_constrain_callback, + NULL, NULL); + meta_device_manager_native_set_relative_motion_filter (manager, relative_motion_filter, + meta_backend_get_monitor_manager (backend)); if (meta_settings_is_experimental_feature_enabled (settings, META_EXPERIMENTAL_FEATURE_RT_SCHEDULER)) @@ -411,7 +412,7 @@ meta_backend_native_warp_pointer (MetaBackend *backend, guint32 time_ = 0; /* Warp the input device pointer state. */ - clutter_evdev_warp_pointer (device, time_, x, y); + meta_device_manager_native_warp_pointer (device, time_, x, y); /* Warp displayed pointer cursor. */ meta_cursor_tracker_update_position (cursor_tracker, x, y); @@ -450,7 +451,7 @@ meta_backend_native_set_keymap (MetaBackend *backend, keymap = xkb_keymap_new_from_names (context, &names, XKB_KEYMAP_COMPILE_NO_FLAGS); xkb_context_unref (context); - clutter_evdev_set_keyboard_map (manager, keymap); + meta_device_manager_native_set_keyboard_map (manager, keymap); meta_backend_notify_keymap_changed (backend); @@ -461,7 +462,7 @@ static struct xkb_keymap * meta_backend_native_get_keymap (MetaBackend *backend) { ClutterDeviceManager *manager = clutter_device_manager_get_default (); - return clutter_evdev_get_keyboard_map (manager); + return meta_device_manager_native_get_keyboard_map (manager); } static xkb_layout_index_t @@ -469,7 +470,7 @@ meta_backend_native_get_keymap_layout_group (MetaBackend *backend) { ClutterDeviceManager *manager = clutter_device_manager_get_default (); - return clutter_evdev_get_keyboard_layout_index (manager); + return meta_device_manager_native_get_keyboard_layout_index (manager); } static void @@ -483,7 +484,7 @@ meta_backend_native_lock_layout_group (MetaBackend *backend, if (old_idx == idx) return; - clutter_evdev_set_keyboard_layout_index (manager, idx); + meta_device_manager_native_set_keyboard_layout_index (manager, idx); meta_backend_notify_keymap_layout_group_changed (backend, idx); } @@ -492,7 +493,7 @@ meta_backend_native_set_numlock (MetaBackend *backend, gboolean numlock_state) { ClutterDeviceManager *manager = clutter_device_manager_get_default (); - clutter_evdev_set_keyboard_numlock (manager, numlock_state); + meta_device_manager_native_set_keyboard_numlock (manager, numlock_state); } static gboolean @@ -503,9 +504,9 @@ meta_backend_native_get_relative_motion_deltas (MetaBackend *backend, double *dx_unaccel, double *dy_unaccel) { - return clutter_evdev_event_get_relative_motion (event, - dx, dy, - dx_unaccel, dy_unaccel); + return meta_event_native_get_relative_motion (event, + dx, dy, + dx_unaccel, dy_unaccel); } static void @@ -798,7 +799,7 @@ meta_backend_native_pause (MetaBackendNative *native) MetaMonitorManagerKms *monitor_manager_kms = META_MONITOR_MANAGER_KMS (monitor_manager); - clutter_evdev_release_devices (); + meta_device_manager_native_release_devices (); clutter_stage_freeze_updates (stage); disconnect_udev_device_added_handler (native); @@ -821,7 +822,7 @@ void meta_backend_native_resume (MetaBackendNative *native) connect_udev_device_added_handler (native); - clutter_evdev_reclaim_devices (); + meta_device_manager_native_reclaim_devices (); clutter_stage_thaw_updates (stage); clutter_actor_queue_redraw (CLUTTER_ACTOR (stage)); diff --git a/src/backends/native/meta-clutter-backend-native.c b/src/backends/native/meta-clutter-backend-native.c index 7d1479053..e60680803 100644 --- a/src/backends/native/meta-clutter-backend-native.c +++ b/src/backends/native/meta-clutter-backend-native.c @@ -44,6 +44,8 @@ #include "backends/meta-backend-private.h" #include "backends/meta-renderer.h" +#include "backends/native/meta-device-manager-native.h" +#include "backends/native/meta-keymap-native.h" #include "backends/native/meta-stage-native.h" #include "clutter/clutter.h" #include "core/bell.h" @@ -54,6 +56,8 @@ struct _MetaClutterBackendNative ClutterBackendEglNative parent; MetaStageNative *stage_native; + MetaKeymapNative *keymap; + MetaDeviceManagerNative *device_manager; }; G_DEFINE_TYPE (MetaClutterBackendNative, meta_clutter_backend_native, @@ -103,6 +107,33 @@ meta_clutter_backend_native_bell_notify (ClutterBackend *backend) meta_bell_notify (display, NULL); } +static ClutterDeviceManager * +meta_clutter_backend_native_get_device_manager (ClutterBackend *backend) +{ + MetaClutterBackendNative *backend_native = META_CLUTTER_BACKEND_NATIVE (backend); + + return CLUTTER_DEVICE_MANAGER (backend_native->device_manager); +} + +static ClutterKeymap * +meta_clutter_backend_native_get_keymap (ClutterBackend *backend) +{ + MetaClutterBackendNative *backend_native = META_CLUTTER_BACKEND_NATIVE (backend); + + return CLUTTER_KEYMAP (backend_native->keymap); +} + +static void +meta_clutter_backend_native_init_events (ClutterBackend *backend) +{ + MetaClutterBackendNative *backend_native = META_CLUTTER_BACKEND_NATIVE (backend); + + backend_native->keymap = g_object_new (META_TYPE_KEYMAP_NATIVE, NULL); + backend_native->device_manager = g_object_new (META_TYPE_DEVICE_MANAGER_NATIVE, + "backend", backend, + NULL); +} + static void meta_clutter_backend_native_init (MetaClutterBackendNative *clutter_backend_nativen) { @@ -116,4 +147,7 @@ meta_clutter_backend_native_class_init (MetaClutterBackendNativeClass *klass) clutter_backend_class->get_renderer = meta_clutter_backend_native_get_renderer; clutter_backend_class->create_stage = meta_clutter_backend_native_create_stage; clutter_backend_class->bell_notify = meta_clutter_backend_native_bell_notify; + clutter_backend_class->get_device_manager = meta_clutter_backend_native_get_device_manager; + clutter_backend_class->get_keymap = meta_clutter_backend_native_get_keymap; + clutter_backend_class->init_events = meta_clutter_backend_native_init_events; } diff --git a/clutter/clutter/evdev/clutter-device-manager-evdev.c b/src/backends/native/meta-device-manager-native.c similarity index 69% rename from clutter/clutter/evdev/clutter-device-manager-evdev.c rename to src/backends/native/meta-device-manager-native.c index f3562a9e4..28f5078b5 100644 --- a/clutter/clutter/evdev/clutter-device-manager-evdev.c +++ b/src/backends/native/meta-device-manager-native.c @@ -1,8 +1,4 @@ /* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * * Copyright (C) 2010 Intel Corp. * Copyright (C) 2014 Jonas Ådahl * @@ -23,7 +19,7 @@ * Author: Jonas Ådahl */ -#include "clutter-build-config.h" +#include "config.h" #include #include @@ -38,25 +34,15 @@ #include #include -#include "clutter-backend.h" -#include "clutter-debug.h" -#include "clutter-device-manager.h" -#include "clutter-device-manager-private.h" -#include "clutter-event-private.h" -#include "clutter-input-device-evdev.h" -#include "clutter-keymap-evdev.h" -#include "clutter-seat-evdev.h" -#include "clutter-virtual-input-device-evdev.h" -#include "clutter-main.h" -#include "clutter-private.h" -#include "clutter-stage-manager.h" -#include "clutter-xkb-utils.h" -#include "clutter-backend-private.h" -#include "clutter-evdev.h" -#include "clutter-stage-private.h" -#include "clutter-input-device-tool-evdev.h" - -#include "clutter-device-manager-evdev.h" +#include "backends/native/meta-device-manager-native.h" +#include "backends/native/meta-event-native.h" +#include "backends/native/meta-input-device-native.h" +#include "backends/native/meta-input-device-tool-native.h" +#include "backends/native/meta-keymap-native.h" +#include "backends/native/meta-seat-native.h" +#include "backends/native/meta-virtual-input-device-native.h" +#include "backends/native/meta-xkb-utils.h" +#include "clutter/clutter-mutter.h" /* * Clutter makes the assumption that two core devices have ID's 2 and 3 (core @@ -68,36 +54,36 @@ */ #define INITIAL_DEVICE_ID 2 -typedef struct _ClutterEventFilter ClutterEventFilter; +typedef struct _MetaEventFilter MetaEventFilter; -struct _ClutterEventFilter +struct _MetaEventFilter { - ClutterEvdevFilterFunc func; + MetaEvdevFilterFunc func; gpointer data; GDestroyNotify destroy_notify; }; -typedef struct _ClutterEventSource ClutterEventSource; +typedef struct _MetaEventSource MetaEventSource; -struct _ClutterDeviceManagerEvdevPrivate +struct _MetaDeviceManagerNativePrivate { struct libinput *libinput; ClutterStage *stage; gboolean released; - ClutterEventSource *event_source; + MetaEventSource *event_source; GSList *devices; GSList *seats; - ClutterSeatEvdev *main_seat; + MetaSeatNative *main_seat; - ClutterPointerConstrainCallback constrain_callback; - gpointer constrain_data; - GDestroyNotify constrain_data_notify; + MetaPointerConstrainCallback constrain_callback; + gpointer constrain_data; + GDestroyNotify constrain_data_notify; - ClutterRelativeMotionFilter relative_motion_filter; + MetaRelativeMotionFilter relative_motion_filter; gpointer relative_motion_filter_user_data; ClutterStageManager *stage_manager; @@ -110,15 +96,15 @@ struct _ClutterDeviceManagerEvdevPrivate GList *free_device_ids; }; -G_DEFINE_TYPE_WITH_CODE (ClutterDeviceManagerEvdev, - clutter_device_manager_evdev, +G_DEFINE_TYPE_WITH_CODE (MetaDeviceManagerNative, + meta_device_manager_native, CLUTTER_TYPE_DEVICE_MANAGER, - G_ADD_PRIVATE (ClutterDeviceManagerEvdev)) + G_ADD_PRIVATE (MetaDeviceManagerNative)) -static ClutterOpenDeviceCallback device_open_callback; -static ClutterCloseDeviceCallback device_close_callback; -static gpointer device_callback_data; -static gchar * evdev_seat_id; +static MetaOpenDeviceCallback device_open_callback; +static MetaCloseDeviceCallback device_close_callback; +static gpointer device_callback_data; +static gchar * evdev_seat_id; #ifdef CLUTTER_ENABLE_DEBUG static const char *device_type_str[] = { @@ -137,53 +123,53 @@ static const char *device_type_str[] = { #endif /* CLUTTER_ENABLE_DEBUG */ /* - * ClutterEventSource management + * MetaEventSource management * * The device manager is responsible for managing the GSource when devices * appear and disappear from the system. */ static void -clutter_device_manager_evdev_copy_event_data (ClutterDeviceManager *device_manager, - const ClutterEvent *src, - ClutterEvent *dest) +meta_device_manager_native_copy_event_data (ClutterDeviceManager *device_manager, + const ClutterEvent *src, + ClutterEvent *dest) { - ClutterEventEvdev *event_evdev; + MetaEventNative *event_evdev; event_evdev = _clutter_event_get_platform_data (src); if (event_evdev != NULL) - _clutter_event_set_platform_data (dest, _clutter_event_evdev_copy (event_evdev)); + _clutter_event_set_platform_data (dest, meta_event_native_copy (event_evdev)); } static void -clutter_device_manager_evdev_free_event_data (ClutterDeviceManager *device_manager, - ClutterEvent *event) +meta_device_manager_native_free_event_data (ClutterDeviceManager *device_manager, + ClutterEvent *event) { - ClutterEventEvdev *event_evdev; + MetaEventNative *event_evdev; event_evdev = _clutter_event_get_platform_data (event); if (event_evdev != NULL) - _clutter_event_evdev_free (event_evdev); + meta_event_native_free (event_evdev); } /* - * ClutterEventSource for reading input devices + * MetaEventSource for reading input devices */ -struct _ClutterEventSource +struct _MetaEventSource { GSource source; - ClutterDeviceManagerEvdev *manager_evdev; + MetaDeviceManagerNative *manager_evdev; GPollFD event_poll_fd; }; static void -process_events (ClutterDeviceManagerEvdev *manager_evdev); +process_events (MetaDeviceManagerNative *manager_evdev); static gboolean -clutter_event_prepare (GSource *source, - gint *timeout) +meta_event_prepare (GSource *source, + gint *timeout) { gboolean retval; @@ -198,9 +184,9 @@ clutter_event_prepare (GSource *source, } static gboolean -clutter_event_check (GSource *source) +meta_event_check (GSource *source) { - ClutterEventSource *event_source = (ClutterEventSource *) source; + MetaEventSource *event_source = (MetaEventSource *) source; gboolean retval; _clutter_threads_acquire_lock (); @@ -220,13 +206,13 @@ queue_event (ClutterEvent *event) } void -_clutter_device_manager_evdev_constrain_pointer (ClutterDeviceManagerEvdev *manager_evdev, - ClutterInputDevice *core_pointer, - uint64_t time_us, - float x, - float y, - float *new_x, - float *new_y) +meta_device_manager_native_constrain_pointer (MetaDeviceManagerNative *manager_evdev, + ClutterInputDevice *core_pointer, + uint64_t time_us, + float x, + float y, + float *new_x, + float *new_y) { if (manager_evdev->priv->constrain_callback) { @@ -248,14 +234,14 @@ _clutter_device_manager_evdev_constrain_pointer (ClutterDeviceManagerEvdev *mana } void -_clutter_device_manager_evdev_filter_relative_motion (ClutterDeviceManagerEvdev *manager_evdev, - ClutterInputDevice *device, - float x, - float y, - float *dx, - float *dy) +meta_device_manager_native_filter_relative_motion (MetaDeviceManagerNative *manager_evdev, + ClutterInputDevice *device, + float x, + float y, + float *dx, + float *dy) { - ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; + MetaDeviceManagerNativePrivate *priv = manager_evdev->priv; if (!priv->relative_motion_filter) return; @@ -272,16 +258,16 @@ new_absolute_motion_event (ClutterInputDevice *input_device, gdouble *axes) { gfloat stage_width, stage_height; - ClutterDeviceManagerEvdev *manager_evdev; - ClutterInputDeviceEvdev *device_evdev; - ClutterSeatEvdev *seat; + MetaDeviceManagerNative *manager_evdev; + MetaInputDeviceNative *device_evdev; + MetaSeatNative *seat; ClutterStage *stage; ClutterEvent *event = NULL; stage = _clutter_input_device_get_stage (input_device); - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (input_device->device_manager); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (input_device); + manager_evdev = META_DEVICE_MANAGER_NATIVE (input_device->device_manager); + seat = meta_input_device_native_get_seat (device_evdev); stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage)); stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage)); @@ -304,15 +290,15 @@ new_absolute_motion_event (ClutterInputDevice *input_device, y = CLAMP (y, 0.f, stage_height - 1); } - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->motion.time = us2ms (time_us); event->motion.stage = stage; - _clutter_xkb_translate_state (event, seat->xkb, seat->button_state); + meta_xkb_translate_state (event, seat->xkb, seat->button_state); event->motion.x = x; event->motion.y = y; - clutter_input_device_evdev_translate_coordinates (input_device, stage, - &event->motion.x, - &event->motion.y); + meta_input_device_native_translate_coordinates (input_device, stage, + &event->motion.x, + &event->motion.y); event->motion.axes = axes; clutter_event_set_device (event, seat->core_pointer); clutter_event_set_source_device (event, input_device); @@ -357,17 +343,17 @@ notify_relative_tool_motion (ClutterInputDevice *input_device, gfloat dy, gdouble *axes) { - ClutterInputDeviceEvdev *device_evdev; + MetaInputDeviceNative *device_evdev; ClutterEvent *event; - ClutterSeatEvdev *seat; + MetaSeatNative *seat; gfloat x, y; - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (input_device); + seat = meta_input_device_native_get_seat (device_evdev); x = input_device->current_x + dx; y = input_device->current_y + dy; - _clutter_device_manager_evdev_filter_relative_motion (seat->manager_evdev, + meta_device_manager_native_filter_relative_motion (seat->manager_evdev, input_device, seat->pointer_x, seat->pointer_y, @@ -375,7 +361,7 @@ notify_relative_tool_motion (ClutterInputDevice *input_device, &dy); event = new_absolute_motion_event (input_device, time_us, x, y, axes); - _clutter_evdev_event_set_relative_motion (event, dx, dy, 0, 0); + meta_event_native_set_relative_motion (event, dx, dy, 0, 0); queue_event (event); } @@ -390,8 +376,8 @@ notify_pinch_gesture_event (ClutterInputDevice *input_device, gdouble scale, guint n_fingers) { - ClutterInputDeviceEvdev *device_evdev; - ClutterSeatEvdev *seat; + MetaInputDeviceNative *device_evdev; + MetaSeatNative *seat; ClutterStage *stage; ClutterEvent *event = NULL; ClutterPoint pos; @@ -402,14 +388,14 @@ notify_pinch_gesture_event (ClutterInputDevice *input_device, if (stage == NULL) return; - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (input_device); + seat = meta_input_device_native_get_seat (device_evdev); event = clutter_event_new (CLUTTER_TOUCHPAD_PINCH); clutter_input_device_get_coords (seat->core_pointer, NULL, &pos); - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->touchpad_pinch.phase = phase; event->touchpad_pinch.time = us2ms (time_us); event->touchpad_pinch.stage = CLUTTER_STAGE (stage); @@ -421,7 +407,7 @@ notify_pinch_gesture_event (ClutterInputDevice *input_device, event->touchpad_pinch.scale = scale; event->touchpad_pinch.n_fingers = n_fingers; - _clutter_xkb_translate_state (event, seat->xkb, seat->button_state); + meta_xkb_translate_state (event, seat->xkb, seat->button_state); clutter_event_set_device (event, seat->core_pointer); clutter_event_set_source_device (event, input_device); @@ -437,8 +423,8 @@ notify_swipe_gesture_event (ClutterInputDevice *input_device, gdouble dx, gdouble dy) { - ClutterInputDeviceEvdev *device_evdev; - ClutterSeatEvdev *seat; + MetaInputDeviceNative *device_evdev; + MetaSeatNative *seat; ClutterStage *stage; ClutterEvent *event = NULL; ClutterPoint pos; @@ -449,12 +435,12 @@ notify_swipe_gesture_event (ClutterInputDevice *input_device, if (stage == NULL) return; - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (input_device); + seat = meta_input_device_native_get_seat (device_evdev); event = clutter_event_new (CLUTTER_TOUCHPAD_SWIPE); - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->touchpad_swipe.phase = phase; event->touchpad_swipe.time = us2ms (time_us); event->touchpad_swipe.stage = CLUTTER_STAGE (stage); @@ -466,7 +452,7 @@ notify_swipe_gesture_event (ClutterInputDevice *input_device, event->touchpad_swipe.dy = dy; event->touchpad_swipe.n_fingers = n_fingers; - _clutter_xkb_translate_state (event, seat->xkb, seat->button_state); + meta_xkb_translate_state (event, seat->xkb, seat->button_state); clutter_event_set_device (event, seat->core_pointer); clutter_event_set_source_device (event, input_device); @@ -479,8 +465,8 @@ notify_proximity (ClutterInputDevice *input_device, guint64 time_us, gboolean in) { - ClutterInputDeviceEvdev *device_evdev; - ClutterSeatEvdev *seat; + MetaInputDeviceNative *device_evdev; + MetaSeatNative *seat; ClutterStage *stage; ClutterEvent *event = NULL; @@ -490,15 +476,15 @@ notify_proximity (ClutterInputDevice *input_device, if (stage == NULL) return; - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (input_device); + seat = meta_input_device_native_get_seat (device_evdev); if (in) event = clutter_event_new (CLUTTER_PROXIMITY_IN); else event = clutter_event_new (CLUTTER_PROXIMITY_OUT); - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->proximity.time = us2ms (time_us); event->proximity.stage = CLUTTER_STAGE (stage); @@ -519,8 +505,8 @@ notify_pad_button (ClutterInputDevice *input_device, guint32 mode, guint32 pressed) { - ClutterInputDeviceEvdev *device_evdev; - ClutterSeatEvdev *seat; + MetaInputDeviceNative *device_evdev; + MetaSeatNative *seat; ClutterStage *stage; ClutterEvent *event; @@ -535,10 +521,10 @@ notify_pad_button (ClutterInputDevice *input_device, else event = clutter_event_new (CLUTTER_PAD_BUTTON_RELEASE); - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (input_device); + seat = meta_input_device_native_get_seat (device_evdev); - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->pad_button.stage = stage; event->pad_button.button = button; event->pad_button.group = mode_group; @@ -561,9 +547,9 @@ notify_pad_strip (ClutterInputDevice *input_device, guint32 mode, gdouble value) { - ClutterInputDeviceEvdev *device_evdev; + MetaInputDeviceNative *device_evdev; ClutterInputDevicePadSource source; - ClutterSeatEvdev *seat; + MetaSeatNative *seat; ClutterStage *stage; ClutterEvent *event; @@ -578,11 +564,11 @@ notify_pad_strip (ClutterInputDevice *input_device, else source = CLUTTER_INPUT_DEVICE_PAD_SOURCE_UNKNOWN; - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (input_device); + seat = meta_input_device_native_get_seat (device_evdev); event = clutter_event_new (CLUTTER_PAD_STRIP); - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->pad_strip.strip_source = source; event->pad_strip.stage = stage; event->pad_strip.strip_number = strip_number; @@ -607,9 +593,9 @@ notify_pad_ring (ClutterInputDevice *input_device, guint32 mode, gdouble angle) { - ClutterInputDeviceEvdev *device_evdev; + MetaInputDeviceNative *device_evdev; ClutterInputDevicePadSource source; - ClutterSeatEvdev *seat; + MetaSeatNative *seat; ClutterStage *stage; ClutterEvent *event; @@ -624,11 +610,11 @@ notify_pad_ring (ClutterInputDevice *input_device, else source = CLUTTER_INPUT_DEVICE_PAD_SOURCE_UNKNOWN; - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (input_device); + seat = meta_input_device_native_get_seat (device_evdev); event = clutter_event_new (CLUTTER_PAD_RING); - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->pad_ring.ring_source = source; event->pad_ring.stage = stage; event->pad_ring.ring_number = ring_number; @@ -645,21 +631,21 @@ notify_pad_ring (ClutterInputDevice *input_device, } static void -dispatch_libinput (ClutterDeviceManagerEvdev *manager_evdev) +dispatch_libinput (MetaDeviceManagerNative *manager_evdev) { - ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; + MetaDeviceManagerNativePrivate *priv = manager_evdev->priv; libinput_dispatch (priv->libinput); process_events (manager_evdev); } static gboolean -clutter_event_dispatch (GSource *g_source, - GSourceFunc callback, - gpointer user_data) +meta_event_dispatch (GSource *g_source, + GSourceFunc callback, + gpointer user_data) { - ClutterEventSource *source = (ClutterEventSource *) g_source; - ClutterDeviceManagerEvdev *manager_evdev; + MetaEventSource *source = (MetaEventSource *) g_source; + MetaDeviceManagerNative *manager_evdev; ClutterEvent *event; _clutter_threads_acquire_lock (); @@ -681,10 +667,10 @@ clutter_event_dispatch (GSource *g_source, ClutterModifierType event_state; ClutterInputDevice *input_device = clutter_event_get_source_device (event); - ClutterInputDeviceEvdev *device_evdev = - CLUTTER_INPUT_DEVICE_EVDEV (input_device); - ClutterSeatEvdev *seat = - _clutter_input_device_evdev_get_seat (device_evdev); + MetaInputDeviceNative *device_evdev = + META_INPUT_DEVICE_NATIVE (input_device); + MetaSeatNative *seat = + meta_input_device_native_get_seat (device_evdev); /* Drop events if we don't have any stage to forward them to */ if (!_clutter_input_device_get_stage (input_device)) @@ -706,22 +692,22 @@ out: return TRUE; } static GSourceFuncs event_funcs = { - clutter_event_prepare, - clutter_event_check, - clutter_event_dispatch, + meta_event_prepare, + meta_event_check, + meta_event_dispatch, NULL }; -static ClutterEventSource * -clutter_event_source_new (ClutterDeviceManagerEvdev *manager_evdev) +static MetaEventSource * +meta_event_source_new (MetaDeviceManagerNative *manager_evdev) { - ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; + MetaDeviceManagerNativePrivate *priv = manager_evdev->priv; GSource *source; - ClutterEventSource *event_source; + MetaEventSource *event_source; gint fd; - source = g_source_new (&event_funcs, sizeof (ClutterEventSource)); - event_source = (ClutterEventSource *) source; + source = g_source_new (&event_funcs, sizeof (MetaEventSource)); + event_source = (MetaEventSource *) source; /* setup the source */ event_source->manager_evdev = manager_evdev; @@ -740,12 +726,10 @@ clutter_event_source_new (ClutterDeviceManagerEvdev *manager_evdev) } static void -clutter_event_source_free (ClutterEventSource *source) +meta_event_source_free (MetaEventSource *source) { GSource *g_source = (GSource *) source; - CLUTTER_NOTE (EVENT, "Removing GSource for evdev device manager"); - /* ignore the return value of close, it's not like we can do something * about it */ close (source->event_poll_fd.fd); @@ -755,14 +739,14 @@ clutter_event_source_free (ClutterEventSource *source) } static void -evdev_add_device (ClutterDeviceManagerEvdev *manager_evdev, - struct libinput_device *libinput_device) +evdev_add_device (MetaDeviceManagerNative *manager_evdev, + struct libinput_device *libinput_device) { ClutterDeviceManager *manager = (ClutterDeviceManager *) manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; + MetaDeviceManagerNativePrivate *priv = manager_evdev->priv; ClutterInputDeviceType type; struct libinput_seat *libinput_seat; - ClutterSeatEvdev *seat; + MetaSeatNative *seat; ClutterInputDevice *device; libinput_seat = libinput_device_get_seat (libinput_device); @@ -776,21 +760,21 @@ evdev_add_device (ClutterDeviceManagerEvdev *manager_evdev, seat = priv->main_seat; else { - seat = clutter_seat_evdev_new (manager_evdev); + seat = meta_seat_native_new (manager_evdev); priv->seats = g_slist_append (priv->seats, seat); } - clutter_seat_evdev_set_libinput_seat (seat, libinput_seat); + meta_seat_native_set_libinput_seat (seat, libinput_seat); } - device = _clutter_input_device_evdev_new (manager, seat, libinput_device); + device = meta_input_device_native_new (manager, seat, libinput_device); _clutter_input_device_set_stage (device, manager_evdev->priv->stage); _clutter_device_manager_add_device (manager, device); /* Clutter assumes that device types are exclusive in the * ClutterInputDevice API */ - type = _clutter_input_device_evdev_determine_type (libinput_device); + type = meta_input_device_native_determine_type (libinput_device); if (type == CLUTTER_KEYBOARD_DEVICE) { @@ -802,15 +786,11 @@ evdev_add_device (ClutterDeviceManagerEvdev *manager_evdev, _clutter_input_device_set_associated_device (device, seat->core_pointer); _clutter_input_device_add_slave (seat->core_pointer, device); } - - CLUTTER_NOTE (EVENT, "Added physical device '%s', type %s", - clutter_input_device_get_device_name (device), - device_type_str[type]); } static void -evdev_remove_device (ClutterDeviceManagerEvdev *manager_evdev, - ClutterInputDeviceEvdev *device_evdev) +evdev_remove_device (MetaDeviceManagerNative *manager_evdev, + MetaInputDeviceNative *device_evdev) { ClutterDeviceManager *manager = CLUTTER_DEVICE_MANAGER (manager_evdev); ClutterInputDevice *input_device = CLUTTER_INPUT_DEVICE (device_evdev); @@ -823,35 +803,35 @@ evdev_remove_device (ClutterDeviceManagerEvdev *manager_evdev, */ static void -clutter_device_manager_evdev_add_device (ClutterDeviceManager *manager, - ClutterInputDevice *device) +meta_device_manager_native_add_device (ClutterDeviceManager *manager, + ClutterInputDevice *device) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; - ClutterInputDeviceEvdev *device_evdev; - ClutterSeatEvdev *seat; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; + MetaInputDeviceNative *device_evdev; + MetaSeatNative *seat; - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); + manager_evdev = META_DEVICE_MANAGER_NATIVE (manager); priv = manager_evdev->priv; - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (device); + seat = meta_input_device_native_get_seat (device_evdev); seat->devices = g_slist_prepend (seat->devices, device); priv->devices = g_slist_prepend (priv->devices, device); } static void -clutter_device_manager_evdev_remove_device (ClutterDeviceManager *manager, - ClutterInputDevice *device) +meta_device_manager_native_remove_device (ClutterDeviceManager *manager, + ClutterInputDevice *device) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; - ClutterInputDeviceEvdev *device_evdev; - ClutterSeatEvdev *seat; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; + MetaInputDeviceNative *device_evdev; + MetaSeatNative *seat; - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); + device_evdev = META_INPUT_DEVICE_NATIVE (device); + seat = meta_input_device_native_get_seat (device_evdev); + manager_evdev = META_DEVICE_MANAGER_NATIVE (manager); priv = manager_evdev->priv; /* Remove the device */ @@ -859,25 +839,25 @@ clutter_device_manager_evdev_remove_device (ClutterDeviceManager *manager, priv->devices = g_slist_remove (priv->devices, device); if (seat->repeat_timer && seat->repeat_device == device) - clutter_seat_evdev_clear_repeat_timer (seat); + meta_seat_native_clear_repeat_timer (seat); g_object_unref (device); } static const GSList * -clutter_device_manager_evdev_get_devices (ClutterDeviceManager *manager) +meta_device_manager_native_get_devices (ClutterDeviceManager *manager) { - return CLUTTER_DEVICE_MANAGER_EVDEV (manager)->priv->devices; + return META_DEVICE_MANAGER_NATIVE (manager)->priv->devices; } static ClutterInputDevice * -clutter_device_manager_evdev_get_core_device (ClutterDeviceManager *manager, - ClutterInputDeviceType type) +meta_device_manager_native_get_core_device (ClutterDeviceManager *manager, + ClutterInputDeviceType type) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); + manager_evdev = META_DEVICE_MANAGER_NATIVE (manager); priv = manager_evdev->priv; switch (type) @@ -897,20 +877,20 @@ clutter_device_manager_evdev_get_core_device (ClutterDeviceManager *manager, } static ClutterInputDevice * -clutter_device_manager_evdev_get_device (ClutterDeviceManager *manager, - gint id) +meta_device_manager_native_get_device (ClutterDeviceManager *manager, + gint id) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; GSList *l; - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); + manager_evdev = META_DEVICE_MANAGER_NATIVE (manager); priv = manager_evdev->priv; for (l = priv->seats; l; l = l->next) { - ClutterSeatEvdev *seat = l->data; - ClutterInputDevice *device = clutter_seat_evdev_get_device (seat, id); + MetaSeatNative *seat = l->data; + ClutterInputDevice *device = meta_seat_native_get_device (seat, id); if (device) return device; @@ -932,8 +912,8 @@ flush_event_queue (void) } static gboolean -process_base_event (ClutterDeviceManagerEvdev *manager_evdev, - struct libinput_event *event) +process_base_event (MetaDeviceManagerNative *manager_evdev, + struct libinput_event *event) { ClutterInputDevice *device; struct libinput_device *libinput_device; @@ -957,7 +937,7 @@ process_base_event (ClutterDeviceManagerEvdev *manager_evdev, device = libinput_device_get_user_data (libinput_device); evdev_remove_device (manager_evdev, - CLUTTER_INPUT_DEVICE_EVDEV (device)); + META_INPUT_DEVICE_NATIVE (device)); break; default: @@ -1015,7 +995,7 @@ static void input_device_update_tool (ClutterInputDevice *input_device, struct libinput_tablet_tool *libinput_tool) { - ClutterInputDeviceEvdev *evdev_device = CLUTTER_INPUT_DEVICE_EVDEV (input_device); + MetaInputDeviceNative *evdev_device = META_INPUT_DEVICE_NATIVE (input_device); ClutterInputDeviceTool *tool = NULL; ClutterInputDeviceToolType tool_type; guint64 tool_serial; @@ -1029,8 +1009,8 @@ input_device_update_tool (ClutterInputDevice *input_device, if (!tool) { - tool = clutter_input_device_tool_evdev_new (libinput_tool, - tool_serial, tool_type); + tool = meta_input_device_tool_native_new (libinput_tool, + tool_serial, tool_type); clutter_input_device_add_tool (input_device, tool); } } @@ -1067,7 +1047,7 @@ translate_tablet_axes (struct libinput_event_tablet_tool *tablet_event, if (libinput_tablet_tool_has_pressure (libinput_tool)) { value = libinput_event_tablet_tool_get_pressure (tablet_event); - value = clutter_input_device_tool_evdev_translate_pressure (tool, value); + value = meta_input_device_tool_native_translate_pressure (tool, value); g_array_append_val (axes, value); } @@ -1106,16 +1086,16 @@ translate_tablet_axes (struct libinput_event_tablet_tool *tablet_event, return (gdouble *) g_array_free (axes, FALSE); } -static ClutterSeatEvdev * +static MetaSeatNative * seat_from_device (ClutterInputDevice *device) { - ClutterInputDeviceEvdev *device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); + MetaInputDeviceNative *device_evdev = META_INPUT_DEVICE_NATIVE (device); - return _clutter_input_device_evdev_get_seat (device_evdev); + return meta_input_device_native_get_seat (device_evdev); } static void -notify_continuous_axis (ClutterSeatEvdev *seat, +notify_continuous_axis (MetaSeatNative *seat, ClutterInputDevice *device, uint64_t time_us, ClutterScrollSource scroll_source, @@ -1143,13 +1123,13 @@ notify_continuous_axis (ClutterSeatEvdev *seat, finish_flags |= CLUTTER_SCROLL_FINISHED_VERTICAL; } - clutter_seat_evdev_notify_scroll_continuous (seat, device, time_us, - dx, dy, - scroll_source, finish_flags); + meta_seat_native_notify_scroll_continuous (seat, device, time_us, + dx, dy, + scroll_source, finish_flags); } static void -notify_discrete_axis (ClutterSeatEvdev *seat, +notify_discrete_axis (MetaSeatNative *seat, ClutterInputDevice *device, uint64_t time_us, ClutterScrollSource scroll_source, @@ -1170,15 +1150,15 @@ notify_discrete_axis (ClutterSeatEvdev *seat, axis_event, LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL); } - clutter_seat_evdev_notify_discrete_scroll (seat, device, - time_us, - discrete_dx, discrete_dy, - scroll_source); + meta_seat_native_notify_discrete_scroll (seat, device, + time_us, + discrete_dx, discrete_dy, + scroll_source); } static void -process_tablet_axis (ClutterDeviceManagerEvdev *manager_evdev, - struct libinput_event *event) +process_tablet_axis (MetaDeviceManagerNative *manager_evdev, + struct libinput_event *event) { struct libinput_device *libinput_device = libinput_event_get_device (event); guint64 time; @@ -1188,10 +1168,10 @@ process_tablet_axis (ClutterDeviceManagerEvdev *manager_evdev, ClutterInputDevice *device; struct libinput_event_tablet_tool *tablet_event = libinput_event_get_tablet_tool_event (event); - ClutterInputDeviceEvdev *evdev_device; + MetaInputDeviceNative *evdev_device; device = libinput_device_get_user_data (libinput_device); - evdev_device = CLUTTER_INPUT_DEVICE_EVDEV (device); + evdev_device = META_INPUT_DEVICE_NATIVE (device); stage = _clutter_input_device_get_stage (device); if (!stage) @@ -1224,13 +1204,13 @@ process_tablet_axis (ClutterDeviceManagerEvdev *manager_evdev, } static gboolean -process_device_event (ClutterDeviceManagerEvdev *manager_evdev, - struct libinput_event *event) +process_device_event (MetaDeviceManagerNative *manager_evdev, + struct libinput_event *event) { gboolean handled = TRUE; struct libinput_device *libinput_device = libinput_event_get_device(event); ClutterInputDevice *device; - ClutterInputDeviceEvdev *device_evdev; + MetaInputDeviceNative *device_evdev; switch (libinput_event_get_type (event)) { @@ -1256,9 +1236,9 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, seat_key_count != 0)) break; - clutter_seat_evdev_notify_key (seat_from_device (device), - device, - time_us, key, key_state, TRUE); + meta_seat_native_notify_key (seat_from_device (device), + device, + time_us, key, key_state, TRUE); break; } @@ -1280,11 +1260,11 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, dx_unaccel = libinput_event_pointer_get_dx_unaccelerated (pointer_event); dy_unaccel = libinput_event_pointer_get_dy_unaccelerated (pointer_event); - clutter_seat_evdev_notify_relative_motion (seat_from_device (device), - device, - time_us, - dx, dy, - dx_unaccel, dy_unaccel); + meta_seat_native_notify_relative_motion (seat_from_device (device), + device, + time_us, + dx, dy, + dx_unaccel, dy_unaccel); break; } @@ -1312,11 +1292,11 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, y = libinput_event_pointer_get_absolute_y_transformed (motion_event, stage_height); - clutter_seat_evdev_notify_absolute_motion (seat_from_device (device), - device, - time_us, - x, y, - NULL); + meta_seat_native_notify_absolute_motion (seat_from_device (device), + device, + time_us, + x, y, + NULL); break; } @@ -1343,8 +1323,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, seat_button_count != 0)) break; - clutter_seat_evdev_notify_button (seat_from_device (device), device, - time_us, button, button_state); + meta_seat_native_notify_button (seat_from_device (device), device, + time_us, button, button_state); break; } @@ -1354,11 +1334,11 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, enum libinput_pointer_axis_source source; struct libinput_event_pointer *axis_event = libinput_event_get_pointer_event (event); - ClutterSeatEvdev *seat; + MetaSeatNative *seat; ClutterScrollSource scroll_source; device = libinput_device_get_user_data (libinput_device); - seat = _clutter_input_device_evdev_get_seat (CLUTTER_INPUT_DEVICE_EVDEV (device)); + seat = meta_input_device_native_get_seat (META_INPUT_DEVICE_NATIVE (device)); time_us = libinput_event_pointer_get_time_usec (axis_event); source = libinput_event_pointer_get_axis_source (axis_event); @@ -1391,15 +1371,15 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, guint64 time_us; double x, y; gfloat stage_width, stage_height; - ClutterSeatEvdev *seat; + MetaSeatNative *seat; ClutterStage *stage; - ClutterTouchState *touch_state; + MetaTouchState *touch_state; struct libinput_event_touch *touch_event = libinput_event_get_touch_event (event); device = libinput_device_get_user_data (libinput_device); - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (device); + seat = meta_input_device_native_get_seat (device_evdev); stage = _clutter_input_device_get_stage (device); if (stage == NULL) @@ -1416,17 +1396,17 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, stage_height); touch_state = - clutter_input_device_evdev_acquire_touch_state (device_evdev, - device_slot); + meta_input_device_native_acquire_touch_state (device_evdev, + device_slot); touch_state->coords.x = x; touch_state->coords.y = y; - clutter_seat_evdev_notify_touch_event (seat, device, - CLUTTER_TOUCH_BEGIN, - time_us, - touch_state->seat_slot, - touch_state->coords.x, - touch_state->coords.y); + meta_seat_native_notify_touch_event (seat, device, + CLUTTER_TOUCH_BEGIN, + time_us, + touch_state->seat_slot, + touch_state->coords.x, + touch_state->coords.y); break; } @@ -1434,30 +1414,30 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, { int device_slot; guint64 time_us; - ClutterSeatEvdev *seat; - ClutterTouchState *touch_state; + MetaSeatNative *seat; + MetaTouchState *touch_state; struct libinput_event_touch *touch_event = libinput_event_get_touch_event (event); device = libinput_device_get_user_data (libinput_device); - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (device); + seat = meta_input_device_native_get_seat (device_evdev); device_slot = libinput_event_touch_get_slot (touch_event); time_us = libinput_event_touch_get_time_usec (touch_event); touch_state = - clutter_input_device_evdev_lookup_touch_state (device_evdev, - device_slot); + meta_input_device_native_lookup_touch_state (device_evdev, + device_slot); if (!touch_state) break; - clutter_seat_evdev_notify_touch_event (seat, device, - CLUTTER_TOUCH_END, time_us, - touch_state->seat_slot, - touch_state->coords.x, - touch_state->coords.y); - clutter_input_device_evdev_release_touch_state (device_evdev, - touch_state); + meta_seat_native_notify_touch_event (seat, device, + CLUTTER_TOUCH_END, time_us, + touch_state->seat_slot, + touch_state->coords.x, + touch_state->coords.y); + meta_input_device_native_release_touch_state (device_evdev, + touch_state); break; } @@ -1467,15 +1447,15 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, guint64 time_us; double x, y; gfloat stage_width, stage_height; - ClutterSeatEvdev *seat; + MetaSeatNative *seat; ClutterStage *stage; - ClutterTouchState *touch_state; + MetaTouchState *touch_state; struct libinput_event_touch *touch_event = libinput_event_get_touch_event (event); device = libinput_device_get_user_data (libinput_device); - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (device); + seat = meta_input_device_native_get_seat (device_evdev); stage = _clutter_input_device_get_stage (device); if (stage == NULL) @@ -1492,20 +1472,20 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, stage_height); touch_state = - clutter_input_device_evdev_lookup_touch_state (device_evdev, - device_slot); + meta_input_device_native_lookup_touch_state (device_evdev, + device_slot); if (!touch_state) break; touch_state->coords.x = x; touch_state->coords.y = y; - clutter_seat_evdev_notify_touch_event (seat, device, - CLUTTER_TOUCH_UPDATE, - time_us, - touch_state->seat_slot, - touch_state->coords.x, - touch_state->coords.y); + meta_seat_native_notify_touch_event (seat, device, + CLUTTER_TOUCH_UPDATE, + time_us, + touch_state->seat_slot, + touch_state->coords.x, + touch_state->coords.y); break; } case LIBINPUT_EVENT_TOUCH_CANCEL: @@ -1515,10 +1495,10 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, libinput_event_get_touch_event (event); device = libinput_device_get_user_data (libinput_device); - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); + device_evdev = META_INPUT_DEVICE_NATIVE (device); time_us = libinput_event_touch_get_time_usec (touch_event); - clutter_input_device_evdev_release_touch_slots (device_evdev, time_us); + meta_input_device_native_release_touch_slots (device_evdev, time_us); break; } @@ -1648,8 +1628,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, button_state = libinput_event_tablet_tool_get_button_state (tablet_event) == LIBINPUT_BUTTON_STATE_PRESSED; - clutter_seat_evdev_notify_button (seat_from_device (device), device, - time_us, tablet_button, button_state); + meta_seat_native_notify_button (seat_from_device (device), device, + time_us, tablet_button, button_state); break; } case LIBINPUT_EVENT_TABLET_TOOL_TIP: @@ -1670,8 +1650,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, if (button_state) process_tablet_axis (manager_evdev, event); - clutter_seat_evdev_notify_button (seat_from_device (device), device, - time_us, BTN_TOUCH, button_state); + meta_seat_native_notify_button (seat_from_device (device), device, + time_us, BTN_TOUCH, button_state); if (!button_state) process_tablet_axis (manager_evdev, event); break; @@ -1749,11 +1729,11 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, } static gboolean -filter_event (ClutterDeviceManagerEvdev *manager_evdev, - struct libinput_event *event) +filter_event (MetaDeviceManagerNative *manager_evdev, + struct libinput_event *event) { gboolean retval = CLUTTER_EVENT_PROPAGATE; - ClutterEventFilter *filter; + MetaEventFilter *filter; GSList *tmp_list; tmp_list = manager_evdev->priv->event_filters; @@ -1772,8 +1752,8 @@ filter_event (ClutterDeviceManagerEvdev *manager_evdev, } static void -process_event (ClutterDeviceManagerEvdev *manager_evdev, - struct libinput_event *event) +process_event (MetaDeviceManagerNative *manager_evdev, + struct libinput_event *event) { gboolean retval; @@ -1789,9 +1769,9 @@ process_event (ClutterDeviceManagerEvdev *manager_evdev, } static void -process_events (ClutterDeviceManagerEvdev *manager_evdev) +process_events (MetaDeviceManagerNative *manager_evdev) { - ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; + MetaDeviceManagerNativePrivate *priv = manager_evdev->priv; struct libinput_event *event; while ((event = libinput_get_event (priv->libinput))) @@ -1848,14 +1828,14 @@ static const struct libinput_interface libinput_interface = { }; static ClutterVirtualInputDevice * -clutter_device_manager_evdev_create_virtual_device (ClutterDeviceManager *manager, - ClutterInputDeviceType device_type) +meta_device_manager_native_create_virtual_device (ClutterDeviceManager *manager, + ClutterInputDeviceType device_type) { - ClutterDeviceManagerEvdev *manager_evdev = - CLUTTER_DEVICE_MANAGER_EVDEV (manager); - ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; + MetaDeviceManagerNative *manager_evdev = + META_DEVICE_MANAGER_NATIVE (manager); + MetaDeviceManagerNativePrivate *priv = manager_evdev->priv; - return g_object_new (CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE_EVDEV, + return g_object_new (META_TYPE_VIRTUAL_INPUT_DEVICE_NATIVE, "device-manager", manager, "seat", priv->main_seat, "device-type", device_type, @@ -1863,7 +1843,7 @@ clutter_device_manager_evdev_create_virtual_device (ClutterDeviceManager *manag } static ClutterVirtualDeviceType -clutter_device_manager_evdev_get_supported_virtual_device_types (ClutterDeviceManager *device_manager) +meta_device_manager_native_get_supported_virtual_device_types (ClutterDeviceManager *device_manager) { return (CLUTTER_VIRTUAL_DEVICE_TYPE_KEYBOARD | CLUTTER_VIRTUAL_DEVICE_TYPE_POINTER | @@ -1871,40 +1851,40 @@ clutter_device_manager_evdev_get_supported_virtual_device_types (ClutterDeviceMa } static void -clutter_device_manager_evdev_compress_motion (ClutterDeviceManager *device_manger, - ClutterEvent *event, - const ClutterEvent *to_discard) +meta_device_manager_native_compress_motion (ClutterDeviceManager *device_manger, + ClutterEvent *event, + const ClutterEvent *to_discard) { double dx, dy; double dx_unaccel, dy_unaccel; double dst_dx = 0.0, dst_dy = 0.0; double dst_dx_unaccel = 0.0, dst_dy_unaccel = 0.0; - if (!clutter_evdev_event_get_relative_motion (to_discard, - &dx, &dy, - &dx_unaccel, &dy_unaccel)) + if (!meta_event_native_get_relative_motion (to_discard, + &dx, &dy, + &dx_unaccel, &dy_unaccel)) return; - clutter_evdev_event_get_relative_motion (event, - &dst_dx, &dst_dy, - &dst_dx_unaccel, &dst_dy_unaccel); - _clutter_evdev_event_set_relative_motion (event, - dx + dst_dx, - dy + dst_dy, - dx_unaccel + dst_dx_unaccel, - dy_unaccel + dst_dy_unaccel); + meta_event_native_get_relative_motion (event, + &dst_dx, &dst_dy, + &dst_dx_unaccel, &dst_dy_unaccel); + meta_event_native_set_relative_motion (event, + dx + dst_dx, + dy + dst_dy, + dx_unaccel + dst_dx_unaccel, + dy_unaccel + dst_dy_unaccel); } static void -clutter_device_manager_evdev_apply_kbd_a11y_settings (ClutterDeviceManager *device_manager, - ClutterKbdA11ySettings *settings) +meta_device_manager_native_apply_kbd_a11y_settings (ClutterDeviceManager *device_manager, + ClutterKbdA11ySettings *settings) { ClutterInputDevice *device; - device = clutter_device_manager_evdev_get_core_device (device_manager, CLUTTER_KEYBOARD_DEVICE); + device = meta_device_manager_native_get_core_device (device_manager, CLUTTER_KEYBOARD_DEVICE); if (device) - clutter_input_device_evdev_apply_kbd_a11y_settings (CLUTTER_INPUT_DEVICE_EVDEV (device), - settings); + meta_input_device_native_apply_kbd_a11y_settings (META_INPUT_DEVICE_NATIVE (device), + settings); } /* @@ -1912,11 +1892,11 @@ clutter_device_manager_evdev_apply_kbd_a11y_settings (ClutterDeviceManager *de */ static void -clutter_device_manager_evdev_constructed (GObject *gobject) +meta_device_manager_native_constructed (GObject *object) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; - ClutterEventSource *source; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; + MetaEventSource *source; struct udev *udev; udev = udev_new (); @@ -1926,7 +1906,7 @@ clutter_device_manager_evdev_constructed (GObject *gobject) return; } - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (gobject); + manager_evdev = META_DEVICE_MANAGER_NATIVE (object); priv = manager_evdev->priv; priv->libinput = libinput_udev_create_context (&libinput_interface, @@ -1949,22 +1929,22 @@ clutter_device_manager_evdev_constructed (GObject *gobject) udev_unref (udev); - priv->main_seat = clutter_seat_evdev_new (manager_evdev); + priv->main_seat = meta_seat_native_new (manager_evdev); priv->seats = g_slist_append (priv->seats, priv->main_seat); dispatch_libinput (manager_evdev); - source = clutter_event_source_new (manager_evdev); + source = meta_event_source_new (manager_evdev); priv->event_source = source; } static void -clutter_device_manager_evdev_dispose (GObject *object) +meta_device_manager_native_dispose (GObject *object) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (object); + manager_evdev = META_DEVICE_MANAGER_NATIVE (object); priv = manager_evdev->priv; if (priv->stage_added_handler) @@ -1987,23 +1967,23 @@ clutter_device_manager_evdev_dispose (GObject *object) priv->stage_manager = NULL; } - G_OBJECT_CLASS (clutter_device_manager_evdev_parent_class)->dispose (object); + G_OBJECT_CLASS (meta_device_manager_native_parent_class)->dispose (object); } static void -clutter_device_manager_evdev_finalize (GObject *object) +meta_device_manager_native_finalize (GObject *object) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (object); + manager_evdev = META_DEVICE_MANAGER_NATIVE (object); priv = manager_evdev->priv; - g_slist_free_full (priv->seats, (GDestroyNotify) clutter_seat_evdev_free); + g_slist_free_full (priv->seats, (GDestroyNotify) meta_seat_native_free); g_slist_free (priv->devices); if (priv->event_source != NULL) - clutter_event_source_free (priv->event_source); + meta_event_source_free (priv->event_source); if (priv->constrain_data_notify != NULL) priv->constrain_data_notify (priv->constrain_data); @@ -2013,39 +1993,39 @@ clutter_device_manager_evdev_finalize (GObject *object) g_list_free (priv->free_device_ids); - G_OBJECT_CLASS (clutter_device_manager_evdev_parent_class)->finalize (object); + G_OBJECT_CLASS (meta_device_manager_native_parent_class)->finalize (object); } static void -clutter_device_manager_evdev_class_init (ClutterDeviceManagerEvdevClass *klass) +meta_device_manager_native_class_init (MetaDeviceManagerNativeClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); ClutterDeviceManagerClass *manager_class; - gobject_class->constructed = clutter_device_manager_evdev_constructed; - gobject_class->finalize = clutter_device_manager_evdev_finalize; - gobject_class->dispose = clutter_device_manager_evdev_dispose; + object_class->constructed = meta_device_manager_native_constructed; + object_class->finalize = meta_device_manager_native_finalize; + object_class->dispose = meta_device_manager_native_dispose; manager_class = CLUTTER_DEVICE_MANAGER_CLASS (klass); - manager_class->add_device = clutter_device_manager_evdev_add_device; - manager_class->remove_device = clutter_device_manager_evdev_remove_device; - manager_class->get_devices = clutter_device_manager_evdev_get_devices; - manager_class->get_core_device = clutter_device_manager_evdev_get_core_device; - manager_class->get_device = clutter_device_manager_evdev_get_device; - manager_class->create_virtual_device = clutter_device_manager_evdev_create_virtual_device; - manager_class->get_supported_virtual_device_types = clutter_device_manager_evdev_get_supported_virtual_device_types; - manager_class->compress_motion = clutter_device_manager_evdev_compress_motion; - manager_class->apply_kbd_a11y_settings = clutter_device_manager_evdev_apply_kbd_a11y_settings; - manager_class->copy_event_data = clutter_device_manager_evdev_copy_event_data; - manager_class->free_event_data = clutter_device_manager_evdev_free_event_data; + manager_class->add_device = meta_device_manager_native_add_device; + manager_class->remove_device = meta_device_manager_native_remove_device; + manager_class->get_devices = meta_device_manager_native_get_devices; + manager_class->get_core_device = meta_device_manager_native_get_core_device; + manager_class->get_device = meta_device_manager_native_get_device; + manager_class->create_virtual_device = meta_device_manager_native_create_virtual_device; + manager_class->get_supported_virtual_device_types = meta_device_manager_native_get_supported_virtual_device_types; + manager_class->compress_motion = meta_device_manager_native_compress_motion; + manager_class->apply_kbd_a11y_settings = meta_device_manager_native_apply_kbd_a11y_settings; + manager_class->copy_event_data = meta_device_manager_native_copy_event_data; + manager_class->free_event_data = meta_device_manager_native_free_event_data; } static void -clutter_device_manager_evdev_stage_added_cb (ClutterStageManager *manager, - ClutterStage *stage, - ClutterDeviceManagerEvdev *self) +meta_device_manager_native_stage_added_cb (ClutterStageManager *manager, + ClutterStage *stage, + MetaDeviceManagerNative *self) { - ClutterDeviceManagerEvdevPrivate *priv = self->priv; + MetaDeviceManagerNativePrivate *priv = self->priv; GSList *l; /* NB: Currently we can only associate a single stage with all evdev @@ -2060,9 +2040,9 @@ clutter_device_manager_evdev_stage_added_cb (ClutterStageManager *manager, /* Set the stage of any devices that don't already have a stage */ for (l = priv->seats; l; l = l->next) { - ClutterSeatEvdev *seat = l->data; + MetaSeatNative *seat = l->data; - clutter_seat_evdev_set_stage (seat, stage); + meta_seat_native_set_stage (seat, stage); } /* We only want to do this once so we can catch the default @@ -2074,29 +2054,29 @@ clutter_device_manager_evdev_stage_added_cb (ClutterStageManager *manager, } static void -clutter_device_manager_evdev_stage_removed_cb (ClutterStageManager *manager, - ClutterStage *stage, - ClutterDeviceManagerEvdev *self) +meta_device_manager_native_stage_removed_cb (ClutterStageManager *manager, + ClutterStage *stage, + MetaDeviceManagerNative *self) { - ClutterDeviceManagerEvdevPrivate *priv = self->priv; + MetaDeviceManagerNativePrivate *priv = self->priv; GSList *l; /* Remove the stage of any input devices that were pointing to this stage so we don't send events to invalid stages */ for (l = priv->seats; l; l = l->next) { - ClutterSeatEvdev *seat = l->data; + MetaSeatNative *seat = l->data; - clutter_seat_evdev_set_stage (seat, NULL); + meta_seat_native_set_stage (seat, NULL); } } static void -clutter_device_manager_evdev_init (ClutterDeviceManagerEvdev *self) +meta_device_manager_native_init (MetaDeviceManagerNative *self) { - ClutterDeviceManagerEvdevPrivate *priv; + MetaDeviceManagerNativePrivate *priv; - priv = self->priv = clutter_device_manager_evdev_get_instance_private (self); + priv = self->priv = meta_device_manager_native_get_instance_private (self); priv->stage_manager = clutter_stage_manager_get_default (); g_object_ref (priv->stage_manager); @@ -2111,38 +2091,21 @@ clutter_device_manager_evdev_init (ClutterDeviceManagerEvdev *self) priv->stage_added_handler = g_signal_connect (priv->stage_manager, "stage-added", - G_CALLBACK (clutter_device_manager_evdev_stage_added_cb), + G_CALLBACK (meta_device_manager_native_stage_added_cb), self); priv->stage_removed_handler = g_signal_connect (priv->stage_manager, "stage-removed", - G_CALLBACK (clutter_device_manager_evdev_stage_removed_cb), + G_CALLBACK (meta_device_manager_native_stage_removed_cb), self); priv->device_id_next = INITIAL_DEVICE_ID; } -void -_clutter_events_evdev_init (ClutterBackend *backend) -{ - CLUTTER_NOTE (EVENT, "Initializing evdev backend"); - - backend->keymap = g_object_new (CLUTTER_TYPE_KEYMAP_EVDEV, NULL); - backend->device_manager = g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_EVDEV, - "backend", backend, - NULL); -} - -void -_clutter_events_evdev_uninit (ClutterBackend *backend) -{ - CLUTTER_NOTE (EVENT, "Uninitializing evdev backend"); -} - gint -_clutter_device_manager_evdev_acquire_device_id (ClutterDeviceManagerEvdev *manager_evdev) +meta_device_manager_native_acquire_device_id (MetaDeviceManagerNative *manager_evdev) { - ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; + MetaDeviceManagerNativePrivate *priv = manager_evdev->priv; GList *first; gint next_id; @@ -2165,7 +2128,7 @@ _clutter_device_manager_evdev_acquire_device_id (ClutterDeviceManagerEvdev *mana } void -_clutter_device_manager_evdev_dispatch (ClutterDeviceManagerEvdev *manager_evdev) +meta_device_manager_native_dispatch (MetaDeviceManagerNative *manager_evdev) { dispatch_libinput (manager_evdev); } @@ -2178,10 +2141,10 @@ compare_ids (gconstpointer a, } void -_clutter_device_manager_evdev_release_device_id (ClutterDeviceManagerEvdev *manager_evdev, - ClutterInputDevice *device) +meta_device_manager_native_release_device_id (MetaDeviceManagerNative *manager_evdev, + ClutterInputDevice *device) { - ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; + MetaDeviceManagerNativePrivate *priv = manager_evdev->priv; gint device_id; device_id = clutter_input_device_get_device_id (device); @@ -2191,20 +2154,20 @@ _clutter_device_manager_evdev_release_device_id (ClutterDeviceManagerEvdev *mana } ClutterStage * -_clutter_device_manager_evdev_get_stage (ClutterDeviceManagerEvdev *manager_evdev) +meta_device_manager_native_get_stage (MetaDeviceManagerNative *manager_evdev) { - ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; + MetaDeviceManagerNativePrivate *priv = manager_evdev->priv; return priv->stage; } /** - * clutter_evdev_release_devices: + * meta_device_manager_native_release_devices: * * Releases all the evdev devices that Clutter is currently managing. This api * is typically used when switching away from the Clutter application when * switching tty. The devices can be reclaimed later with a call to - * clutter_evdev_reclaim_devices(). + * meta_device_manager_native_reclaim_devices(). * * This function should only be called after clutter has been initialized. * @@ -2212,11 +2175,11 @@ _clutter_device_manager_evdev_get_stage (ClutterDeviceManagerEvdev *manager_evde * Stability: unstable */ void -clutter_evdev_release_devices (void) +meta_device_manager_native_release_devices (void) { ClutterDeviceManager *manager = clutter_device_manager_get_default (); - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; if (!manager) { @@ -2225,9 +2188,9 @@ clutter_evdev_release_devices (void) return; } - g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (manager)); + g_return_if_fail (META_IS_DEVICE_MANAGER_NATIVE (manager)); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); + manager_evdev = META_DEVICE_MANAGER_NATIVE (manager); priv = manager_evdev->priv; if (priv->released) @@ -2245,18 +2208,18 @@ clutter_evdev_release_devices (void) } static void -clutter_evdev_update_xkb_state (ClutterDeviceManagerEvdev *manager_evdev) +update_xkb_state (MetaDeviceManagerNative *manager_evdev) { - ClutterDeviceManagerEvdevPrivate *priv; + MetaDeviceManagerNativePrivate *priv; GSList *iter; - ClutterSeatEvdev *seat; + MetaSeatNative *seat; xkb_mod_mask_t latched_mods; xkb_mod_mask_t locked_mods; struct xkb_keymap *xkb_keymap; ClutterKeymap *keymap; keymap = clutter_backend_get_keymap (clutter_get_default_backend ()); - xkb_keymap = clutter_keymap_evdev_get_keyboard_map (CLUTTER_KEYMAP_EVDEV (keymap)); + xkb_keymap = meta_keymap_native_get_keyboard_map (META_KEYMAP_NATIVE (keymap)); priv = manager_evdev->priv; @@ -2281,12 +2244,12 @@ clutter_evdev_update_xkb_state (ClutterDeviceManagerEvdev *manager_evdev) seat->num_lock_led = xkb_keymap_led_get_index (xkb_keymap, XKB_LED_NAME_NUM); seat->scroll_lock_led = xkb_keymap_led_get_index (xkb_keymap, XKB_LED_NAME_SCROLL); - clutter_seat_evdev_sync_leds (seat); + meta_seat_native_sync_leds (seat); } } /** - * clutter_evdev_reclaim_devices: + * meta_device_manager_native_reclaim_devices: * * This causes Clutter to re-probe for evdev devices. This is must only be * called after a corresponding call to clutter_evdev_release_devices() @@ -2300,12 +2263,12 @@ clutter_evdev_update_xkb_state (ClutterDeviceManagerEvdev *manager_evdev) * Stability: unstable */ void -clutter_evdev_reclaim_devices (void) +meta_device_manager_native_reclaim_devices (void) { ClutterDeviceManager *manager = clutter_device_manager_get_default (); - ClutterDeviceManagerEvdev *manager_evdev = - CLUTTER_DEVICE_MANAGER_EVDEV (manager); - ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; + MetaDeviceManagerNative *manager_evdev = + META_DEVICE_MANAGER_NATIVE (manager); + MetaDeviceManagerNativePrivate *priv = manager_evdev->priv; if (!priv->released) { @@ -2315,14 +2278,14 @@ clutter_evdev_reclaim_devices (void) } libinput_resume (priv->libinput); - clutter_evdev_update_xkb_state (manager_evdev); + update_xkb_state (manager_evdev); process_events (manager_evdev); priv->released = FALSE; } /** - * clutter_evdev_set_device_callbacks: (skip) + * meta_device_manager_native_set_device_callbacks: (skip) * @open_callback: the user replacement for open() * @close_callback: the user replacement for close() * @user_data: user data for @callback @@ -2340,9 +2303,9 @@ clutter_evdev_reclaim_devices (void) * Stability: unstable */ void -clutter_evdev_set_device_callbacks (ClutterOpenDeviceCallback open_callback, - ClutterCloseDeviceCallback close_callback, - gpointer user_data) +meta_device_manager_native_set_device_callbacks (MetaOpenDeviceCallback open_callback, + MetaCloseDeviceCallback close_callback, + gpointer user_data) { device_open_callback = open_callback; device_close_callback = close_callback; @@ -2350,7 +2313,7 @@ clutter_evdev_set_device_callbacks (ClutterOpenDeviceCallback open_callback, } /** - * clutter_evdev_set_keyboard_map: (skip) + * meta_device_manager_native_set_keyboard_map: (skip) * @evdev: the #ClutterDeviceManager created by the evdev backend * @keymap: the new keymap * @@ -2363,24 +2326,24 @@ clutter_evdev_set_device_callbacks (ClutterOpenDeviceCallback open_callback, * Stability: unstable */ void -clutter_evdev_set_keyboard_map (ClutterDeviceManager *evdev, - struct xkb_keymap *xkb_keymap) +meta_device_manager_native_set_keyboard_map (ClutterDeviceManager *evdev, + struct xkb_keymap *xkb_keymap) { - ClutterDeviceManagerEvdev *manager_evdev; + MetaDeviceManagerNative *manager_evdev; ClutterKeymap *keymap; - g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev)); + g_return_if_fail (META_IS_DEVICE_MANAGER_NATIVE (evdev)); keymap = clutter_backend_get_keymap (clutter_get_default_backend ()); - clutter_keymap_evdev_set_keyboard_map (CLUTTER_KEYMAP_EVDEV (keymap), - xkb_keymap); + meta_keymap_native_set_keyboard_map (META_KEYMAP_NATIVE (keymap), + xkb_keymap); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev); - clutter_evdev_update_xkb_state (manager_evdev); + manager_evdev = META_DEVICE_MANAGER_NATIVE (evdev); + update_xkb_state (manager_evdev); } /** - * clutter_evdev_get_keyboard_map: (skip) + * meta_device_manager_native_get_keyboard_map: (skip) * @evdev: the #ClutterDeviceManager created by the evdev backend * * Retrieves the #xkb_keymap in use by the evdev backend. @@ -2391,19 +2354,19 @@ clutter_evdev_set_keyboard_map (ClutterDeviceManager *evdev, * Stability: unstable */ struct xkb_keymap * -clutter_evdev_get_keyboard_map (ClutterDeviceManager *evdev) +meta_device_manager_native_get_keyboard_map (ClutterDeviceManager *evdev) { - ClutterDeviceManagerEvdev *manager_evdev; + MetaDeviceManagerNative *manager_evdev; - g_return_val_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev), NULL); + g_return_val_if_fail (META_IS_DEVICE_MANAGER_NATIVE (evdev), NULL); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev); + manager_evdev = META_DEVICE_MANAGER_NATIVE (evdev); return xkb_state_get_keymap (manager_evdev->priv->main_seat->xkb); } /** - * clutter_evdev_set_keyboard_layout_index: (skip) + * meta_device_manager_set_keyboard_layout_index: (skip) * @evdev: the #ClutterDeviceManager created by the evdev backend * @idx: the xkb layout index to set * @@ -2413,19 +2376,19 @@ clutter_evdev_get_keyboard_map (ClutterDeviceManager *evdev) * Stability: unstable */ void -clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev, - xkb_layout_index_t idx) +meta_device_manager_native_set_keyboard_layout_index (ClutterDeviceManager *evdev, + xkb_layout_index_t idx) { - ClutterDeviceManagerEvdev *manager_evdev; + MetaDeviceManagerNative *manager_evdev; xkb_mod_mask_t depressed_mods; xkb_mod_mask_t latched_mods; xkb_mod_mask_t locked_mods; struct xkb_state *state; GSList *l; - g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev)); + g_return_if_fail (META_IS_DEVICE_MANAGER_NATIVE (evdev)); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev); + manager_evdev = META_DEVICE_MANAGER_NATIVE (evdev); state = manager_evdev->priv->main_seat->xkb; depressed_mods = xkb_state_serialize_mods (state, XKB_STATE_MODS_DEPRESSED); @@ -2435,7 +2398,7 @@ clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev, xkb_state_update_mask (state, depressed_mods, latched_mods, locked_mods, 0, 0, idx); for (l = manager_evdev->priv->seats; l; l = l->next) { - ClutterSeatEvdev *seat = l->data; + MetaSeatNative *seat = l->data; seat->layout_idx = idx; } @@ -2445,16 +2408,16 @@ clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev, * clutter_evdev_get_keyboard_layout_index: (skip) */ xkb_layout_index_t -clutter_evdev_get_keyboard_layout_index (ClutterDeviceManager *evdev) +meta_device_manager_native_get_keyboard_layout_index (ClutterDeviceManager *evdev) { - ClutterDeviceManagerEvdev *manager_evdev; + MetaDeviceManagerNative *manager_evdev; - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev); + manager_evdev = META_DEVICE_MANAGER_NATIVE (evdev); return manager_evdev->priv->main_seat->layout_idx; } /** - * clutter_evdev_set_keyboard_numlock: (skip) + * meta_device_manager_native_set_keyboard_numlock: (skip) * @evdev: the #ClutterDeviceManager created by the evdev backend * @numlock_set: TRUE to set NumLock ON, FALSE otherwise. * @@ -2463,29 +2426,29 @@ clutter_evdev_get_keyboard_layout_index (ClutterDeviceManager *evdev) * Stability: unstable */ void -clutter_evdev_set_keyboard_numlock (ClutterDeviceManager *evdev, - gboolean numlock_state) +meta_device_manager_native_set_keyboard_numlock (ClutterDeviceManager *evdev, + gboolean numlock_state) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; GSList *iter; xkb_mod_mask_t numlock; struct xkb_keymap *xkb_keymap; ClutterKeymap *keymap; - g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev)); + g_return_if_fail (META_IS_DEVICE_MANAGER_NATIVE (evdev)); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev); + manager_evdev = META_DEVICE_MANAGER_NATIVE (evdev); priv = manager_evdev->priv; keymap = clutter_backend_get_keymap (clutter_get_default_backend ()); - xkb_keymap = clutter_keymap_evdev_get_keyboard_map (CLUTTER_KEYMAP_EVDEV (keymap)); + xkb_keymap = meta_keymap_native_get_keyboard_map (META_KEYMAP_NATIVE (keymap)); numlock = (1 << xkb_keymap_mod_get_index (xkb_keymap, "Mod2")); for (iter = priv->seats; iter; iter = iter->next) { - ClutterSeatEvdev *seat = iter->data; + MetaSeatNative *seat = iter->data; xkb_mod_mask_t depressed_mods; xkb_mod_mask_t latched_mods; xkb_mod_mask_t locked_mods; @@ -2508,13 +2471,13 @@ clutter_evdev_set_keyboard_numlock (ClutterDeviceManager *evdev, 0, 0, group_mods); - clutter_seat_evdev_sync_leds (seat); + meta_seat_native_sync_leds (seat); } } /** - * clutter_evdev_set_pointer_constrain_callback: + * meta_device_manager_native_set_pointer_constrain_callback: * @evdev: the #ClutterDeviceManager created by the evdev backend * @callback: the callback * @user_data: data to pass to the callback @@ -2528,17 +2491,17 @@ clutter_evdev_set_keyboard_numlock (ClutterDeviceManager *evdev, * Stability: unstable */ void -clutter_evdev_set_pointer_constrain_callback (ClutterDeviceManager *evdev, - ClutterPointerConstrainCallback callback, - gpointer user_data, - GDestroyNotify user_data_notify) +meta_device_manager_native_set_pointer_constrain_callback (ClutterDeviceManager *evdev, + MetaPointerConstrainCallback callback, + gpointer user_data, + GDestroyNotify user_data_notify) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; - g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev)); + g_return_if_fail (META_IS_DEVICE_MANAGER_NATIVE (evdev)); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev); + manager_evdev = META_DEVICE_MANAGER_NATIVE (evdev); priv = manager_evdev->priv; if (priv->constrain_data_notify) @@ -2550,16 +2513,16 @@ clutter_evdev_set_pointer_constrain_callback (ClutterDeviceManager *e } void -clutter_evdev_set_relative_motion_filter (ClutterDeviceManager *evdev, - ClutterRelativeMotionFilter filter, - gpointer user_data) +meta_device_manager_native_set_relative_motion_filter (ClutterDeviceManager *evdev, + MetaRelativeMotionFilter filter, + gpointer user_data) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterDeviceManagerEvdevPrivate *priv; + MetaDeviceManagerNative *manager_evdev; + MetaDeviceManagerNativePrivate *priv; - g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev)); + g_return_if_fail (META_IS_DEVICE_MANAGER_NATIVE (evdev)); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev); + manager_evdev = META_DEVICE_MANAGER_NATIVE (evdev); priv = manager_evdev->priv; priv->relative_motion_filter = filter; @@ -2567,7 +2530,7 @@ clutter_evdev_set_relative_motion_filter (ClutterDeviceManager *evdev, } /** - * clutter_evdev_set_keyboard_repeat: + * meta_device_manager_native_set_keyboard_repeat: * @evdev: the #ClutterDeviceManager created by the evdev backend * @repeat: whether to enable or disable keyboard repeat events * @delay: the delay in ms between the hardware key press event and @@ -2582,17 +2545,17 @@ clutter_evdev_set_relative_motion_filter (ClutterDeviceManager *evdev, * Stability: unstable */ void -clutter_evdev_set_keyboard_repeat (ClutterDeviceManager *evdev, - gboolean repeat, - guint32 delay, - guint32 interval) +meta_device_manager_native_set_keyboard_repeat (ClutterDeviceManager *evdev, + gboolean repeat, + guint32 delay, + guint32 interval) { - ClutterDeviceManagerEvdev *manager_evdev; - ClutterSeatEvdev *seat; + MetaDeviceManagerNative *manager_evdev; + MetaSeatNative *seat; - g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev)); + g_return_if_fail (META_IS_DEVICE_MANAGER_NATIVE (evdev)); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev); + manager_evdev = META_DEVICE_MANAGER_NATIVE (evdev); seat = manager_evdev->priv->main_seat; seat->repeat = repeat; @@ -2601,7 +2564,7 @@ clutter_evdev_set_keyboard_repeat (ClutterDeviceManager *evdev, } /** - * clutter_evdev_add_filter: (skip) + * meta_device_manager_native_add_filter: (skip) * @func: (closure data): a filter function * @data: (allow-none): user data to be passed to the filter function, or %NULL * @destroy_notify: (allow-none): function to call on @data when the filter is removed, or %NULL @@ -2612,27 +2575,27 @@ clutter_evdev_set_keyboard_repeat (ClutterDeviceManager *evdev, * Stability: unstable */ void -clutter_evdev_add_filter (ClutterEvdevFilterFunc func, - gpointer data, - GDestroyNotify destroy_notify) +meta_device_manager_native_add_filter (MetaEvdevFilterFunc func, + gpointer data, + GDestroyNotify destroy_notify) { - ClutterDeviceManagerEvdev *manager_evdev; + MetaDeviceManagerNative *manager_evdev; ClutterDeviceManager *manager; - ClutterEventFilter *filter; + MetaEventFilter *filter; g_return_if_fail (func != NULL); manager = clutter_device_manager_get_default (); - if (!CLUTTER_IS_DEVICE_MANAGER_EVDEV (manager)) + if (!META_IS_DEVICE_MANAGER_NATIVE (manager)) { g_critical ("The Clutter input backend is not a evdev backend"); return; } - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); + manager_evdev = META_DEVICE_MANAGER_NATIVE (manager); - filter = g_new0 (ClutterEventFilter, 1); + filter = g_new0 (MetaEventFilter, 1); filter->func = func; filter->data = data; filter->destroy_notify = destroy_notify; @@ -2642,7 +2605,7 @@ clutter_evdev_add_filter (ClutterEvdevFilterFunc func, } /** - * clutter_evdev_remove_filter: (skip) + * meta_device_manager_native_remove_filter: (skip) * @func: a filter function * @data: (allow-none): user data to be passed to the filter function, or %NULL * @@ -2652,25 +2615,25 @@ clutter_evdev_add_filter (ClutterEvdevFilterFunc func, * Stability: unstable */ void -clutter_evdev_remove_filter (ClutterEvdevFilterFunc func, - gpointer data) +meta_device_manager_native_remove_filter (MetaEvdevFilterFunc func, + gpointer data) { - ClutterDeviceManagerEvdev *manager_evdev; + MetaDeviceManagerNative *manager_evdev; ClutterDeviceManager *manager; - ClutterEventFilter *filter; + MetaEventFilter *filter; GSList *tmp_list; g_return_if_fail (func != NULL); manager = clutter_device_manager_get_default (); - if (!CLUTTER_IS_DEVICE_MANAGER_EVDEV (manager)) + if (!META_IS_DEVICE_MANAGER_NATIVE (manager)) { g_critical ("The Clutter input backend is not a evdev backend"); return; } - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); + manager_evdev = META_DEVICE_MANAGER_NATIVE (manager); tmp_list = manager_evdev->priv->event_filters; while (tmp_list) @@ -2692,7 +2655,7 @@ clutter_evdev_remove_filter (ClutterEvdevFilterFunc func, } /** - * clutter_evdev_warp_pointer: + * meta_device_manager_native_warp_pointer: * @pointer_device: the pointer device to warp * @time: the timestamp for the warp event * @x: the new X position of the pointer @@ -2710,16 +2673,16 @@ clutter_evdev_remove_filter (ClutterEvdevFilterFunc func, * Stability: unstable */ void -clutter_evdev_warp_pointer (ClutterInputDevice *pointer_device, - guint32 time_, - int x, - int y) +meta_device_manager_native_warp_pointer (ClutterInputDevice *pointer_device, + guint32 time_, + int x, + int y) { notify_absolute_motion (pointer_device, ms2us(time_), x, y, NULL); } /** - * clutter_evdev_set_seat_id: + * meta_device_manager_native_set_seat_id: * @seat_id: The seat ID * * Sets the seat to assign to the libinput context. @@ -2727,14 +2690,14 @@ clutter_evdev_warp_pointer (ClutterInputDevice *pointer_device, * For reliable effects, this function must be called before clutter_init(). */ void -clutter_evdev_set_seat_id (const gchar *seat_id) +meta_device_manager_native_set_seat_id (const gchar *seat_id) { g_free (evdev_seat_id); evdev_seat_id = g_strdup (seat_id); } struct xkb_state * -_clutter_device_manager_evdev_get_xkb_state (ClutterDeviceManagerEvdev *manager_evdev) +meta_device_manager_native_get_xkb_state (MetaDeviceManagerNative *manager_evdev) { return manager_evdev->priv->main_seat->xkb; } diff --git a/src/backends/native/meta-device-manager-native.h b/src/backends/native/meta-device-manager-native.h new file mode 100644 index 000000000..8fa626375 --- /dev/null +++ b/src/backends/native/meta-device-manager-native.h @@ -0,0 +1,194 @@ +/* + * Copyright (C) 2010 Intel Corp. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + * Author: Damien Lespiau + */ + +#ifndef META_DEVICE_MANAGER_NATIVE_H +#define META_DEVICE_MANAGER_NATIVE_H + +#include +#include + +#include "clutter/clutter-mutter.h" + +#define META_TYPE_DEVICE_MANAGER_NATIVE (meta_device_manager_native_get_type ()) +#define META_DEVICE_MANAGER_NATIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_DEVICE_MANAGER_NATIVE, MetaDeviceManagerNative)) +#define META_IS_DEVICE_MANAGER_NATIVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_DEVICE_MANAGER_NATIVE)) +#define META_DEVICE_MANAGER_NATIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_DEVICE_MANAGER_NATIVE, MetaDeviceManagerNativeClass)) +#define META_IS_DEVICE_MANAGER_NATIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_DEVICE_MANAGER_NATIVE)) +#define META_DEVICE_MANAGER_NATIVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_DEVICE_MANAGER_NATIVE, MetaDeviceManagerNativeClass)) + +typedef struct _MetaDeviceManagerNative MetaDeviceManagerNative; +typedef struct _MetaDeviceManagerNativeClass MetaDeviceManagerNativeClass; +typedef struct _MetaDeviceManagerNativePrivate MetaDeviceManagerNativePrivate; + +struct _MetaDeviceManagerNative +{ + ClutterDeviceManager parent_instance; + + MetaDeviceManagerNativePrivate *priv; +}; + +struct _MetaDeviceManagerNativeClass +{ + ClutterDeviceManagerClass parent_class; +}; + +GType meta_device_manager_native_get_type (void) G_GNUC_CONST; + +gint meta_device_manager_native_acquire_device_id (MetaDeviceManagerNative *manager_evdev); + +void meta_device_manager_native_release_device_id (MetaDeviceManagerNative *manager_evdev, + ClutterInputDevice *device); + +ClutterStage * meta_device_manager_native_get_stage (MetaDeviceManagerNative *manager_evdev); + +void meta_device_manager_native_constrain_pointer (MetaDeviceManagerNative *manager_evdev, + ClutterInputDevice *core_pointer, + uint64_t time_us, + float x, + float y, + float *new_x, + float *new_y); + +void meta_device_manager_native_filter_relative_motion (MetaDeviceManagerNative *manager_evdev, + ClutterInputDevice *device, + float x, + float y, + float *dx, + float *dy); + +void meta_device_manager_native_dispatch (MetaDeviceManagerNative *manager_evdev); + +struct xkb_state * meta_device_manager_native_get_xkb_state (MetaDeviceManagerNative *manager_evdev); + +static inline guint64 +us (guint64 us) +{ + return us; +} + +static inline guint64 +ms2us (guint64 ms) +{ + return us (ms * 1000); +} + +static inline guint32 +us2ms (guint64 us) +{ + return (guint32) (us / 1000); +} + +/** + * MetaOpenDeviceCallback: + * @path: the device path + * @flags: flags to be passed to open + * + * This callback will be called when Clutter needs to access an input + * device. It should return an open file descriptor for the file at @path, + * or -1 if opening failed. + */ +typedef int (*MetaOpenDeviceCallback) (const char *path, + int flags, + gpointer user_data, + GError **error); +typedef void (*MetaCloseDeviceCallback) (int fd, + gpointer user_data); + +void meta_device_manager_native_set_device_callbacks (MetaOpenDeviceCallback open_callback, + MetaCloseDeviceCallback close_callback, + gpointer user_data); + +void meta_device_manager_native_set_seat_id (const gchar *seat_id); + +void meta_device_manager_native_release_devices (void); +void meta_device_manager_native_reclaim_devices (void); + +/** + * MetaPointerConstrainCallback: + * @device: the core pointer device + * @time: the event time in milliseconds + * @x: (inout): the new X coordinate + * @y: (inout): the new Y coordinate + * @user_data: user data passed to this function + * + * This callback will be called for all pointer motion events, and should + * update (@x, @y) to constrain the pointer position appropriately. + * The subsequent motion event will use the updated values as the new coordinates. + * Note that the coordinates are not clamped to the stage size, and the callback + * must make sure that this happens before it returns. + * Also note that the event will be emitted even if the pointer is constrained + * to be in the same position. + */ +typedef void (* MetaPointerConstrainCallback) (ClutterInputDevice *device, + guint32 time, + float prev_x, + float prev_y, + float *x, + float *y, + gpointer user_data); + +void meta_device_manager_native_set_pointer_constrain_callback (ClutterDeviceManager *evdev, + MetaPointerConstrainCallback callback, + gpointer user_data, + GDestroyNotify user_data_notify); + +typedef void (* MetaRelativeMotionFilter) (ClutterInputDevice *device, + float x, + float y, + float *dx, + float *dy, + gpointer user_data); + +void meta_device_manager_native_set_relative_motion_filter (ClutterDeviceManager *evdev, + MetaRelativeMotionFilter filter, + gpointer user_data); + +void meta_device_manager_native_set_keyboard_map (ClutterDeviceManager *evdev, + struct xkb_keymap *keymap); + +struct xkb_keymap * meta_device_manager_native_get_keyboard_map (ClutterDeviceManager *evdev); + +void meta_device_manager_native_set_keyboard_layout_index (ClutterDeviceManager *evdev, + xkb_layout_index_t idx); + +xkb_layout_index_t meta_device_manager_native_get_keyboard_layout_index (ClutterDeviceManager *evdev); + +void meta_device_manager_native_set_keyboard_numlock (ClutterDeviceManager *evdev, + gboolean numlock_state); + +void meta_device_manager_native_set_keyboard_repeat (ClutterDeviceManager *evdev, + gboolean repeat, + guint32 delay, + guint32 interval); + +typedef gboolean (* MetaEvdevFilterFunc) (struct libinput_event *event, + gpointer data); + +void meta_device_manager_native_add_filter (MetaEvdevFilterFunc func, + gpointer data, + GDestroyNotify destroy_notify); +void meta_device_manager_native_remove_filter (MetaEvdevFilterFunc func, + gpointer data); + +void meta_device_manager_native_warp_pointer (ClutterInputDevice *pointer_device, + guint32 time_, + int x, + int y); + +#endif /* META_DEVICE_MANAGER_NATIVE_H */ diff --git a/src/backends/native/meta-event-native.c b/src/backends/native/meta-event-native.c new file mode 100644 index 000000000..b6c23b991 --- /dev/null +++ b/src/backends/native/meta-event-native.c @@ -0,0 +1,208 @@ +/* + * Copyright (C) 2015 Red Hat + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + * Authored by: + * Carlos Garnacho + */ + +#include "config.h" + +#include "backends/native/meta-event-native.h" +#include "backends/native/meta-input-device-native.h" +#include "clutter/clutter-mutter.h" + +typedef struct _MetaEventNative MetaEventNative; + +struct _MetaEventNative +{ + guint32 evcode; + + guint64 time_usec; + + gboolean has_relative_motion; + double dx; + double dy; + double dx_unaccel; + double dy_unaccel; +}; + +static MetaEventNative * +meta_event_native_new (void) +{ + return g_slice_new0 (MetaEventNative); +} + +MetaEventNative * +meta_event_native_copy (MetaEventNative *event_evdev) +{ + if (event_evdev != NULL) + return g_slice_dup (MetaEventNative, event_evdev); + + return NULL; +} + +void +meta_event_native_free (MetaEventNative *event_evdev) +{ + if (event_evdev != NULL) + g_slice_free (MetaEventNative, event_evdev); +} + +static MetaEventNative * +meta_event_native_ensure_platform_data (ClutterEvent *event) +{ + MetaEventNative *event_evdev = _clutter_event_get_platform_data (event); + + if (!event_evdev) + { + event_evdev = meta_event_native_new (); + _clutter_event_set_platform_data (event, event_evdev); + } + + return event_evdev; +} + +void +meta_event_native_set_event_code (ClutterEvent *event, + guint32 evcode) +{ + MetaEventNative *event_evdev; + + event_evdev = meta_event_native_ensure_platform_data (event); + event_evdev->evcode = evcode; +} + +void +meta_event_native_set_time_usec (ClutterEvent *event, + guint64 time_usec) +{ + MetaEventNative *event_evdev; + + event_evdev = meta_event_native_ensure_platform_data (event); + event_evdev->time_usec = time_usec; +} + +void +meta_event_native_set_relative_motion (ClutterEvent *event, + double dx, + double dy, + double dx_unaccel, + double dy_unaccel) +{ + MetaEventNative *event_evdev; + + event_evdev = meta_event_native_ensure_platform_data (event); + event_evdev->dx = dx; + event_evdev->dy = dy; + event_evdev->dx_unaccel = dx_unaccel; + event_evdev->dy_unaccel = dy_unaccel; + event_evdev->has_relative_motion = TRUE; +} + +/** + * meta_event_native_get_event_code: + * @event: a #ClutterEvent + * + * Returns the event code of the original event. See linux/input.h for more + * information. + * + * Returns: The event code. + **/ +guint32 +meta_event_native_get_event_code (const ClutterEvent *event) +{ + MetaEventNative *event_evdev = _clutter_event_get_platform_data (event); + + if (event_evdev) + return event_evdev->evcode; + + return 0; +} + +/** + * meta_event_native_get_time_usec: + * @event: a #ClutterEvent + * + * Returns the time in microsecond granularity, or 0 if unavailable. + * + * Returns: The time in microsecond granularity, or 0 if unavailable. + */ +guint64 +meta_event_native_get_time_usec (const ClutterEvent *event) +{ + MetaEventNative *event_evdev = _clutter_event_get_platform_data (event); + + if (event_evdev) + return event_evdev->time_usec; + + return 0; +} + +/** + * meta_event_get_pointer_motion + * @event: a #ClutterEvent + * + * If available, the normal and unaccelerated motion deltas are written + * to the dx, dy, dx_unaccel and dy_unaccel and TRUE is returned. + * + * If unavailable, FALSE is returned. + * + * Returns: TRUE on success, otherwise FALSE. + **/ +gboolean +meta_event_native_get_relative_motion (const ClutterEvent *event, + double *dx, + double *dy, + double *dx_unaccel, + double *dy_unaccel) +{ + MetaEventNative *event_evdev = _clutter_event_get_platform_data (event); + + if (event_evdev && event_evdev->has_relative_motion) + { + if (dx) + *dx = event_evdev->dx; + if (dy) + *dy = event_evdev->dy; + if (dx_unaccel) + *dx_unaccel = event_evdev->dx_unaccel; + if (dy_unaccel) + *dy_unaccel = event_evdev->dy_unaccel; + return TRUE; + } + else + return FALSE; +} + +/** + * meta_event_native_sequence_get_slot: + * @sequence: a #ClutterEventSequence + * + * Retrieves the touch slot triggered by this @sequence + * + * Returns: the libinput touch slot. + * + * Since: 1.20 + * Stability: unstable + **/ +int32_t +meta_event_native_sequence_get_slot (const ClutterEventSequence *sequence) +{ + if (!sequence) + return -1; + + return GPOINTER_TO_INT (sequence) - 1; +} diff --git a/src/backends/native/meta-event-native.h b/src/backends/native/meta-event-native.h new file mode 100644 index 000000000..aaca76b87 --- /dev/null +++ b/src/backends/native/meta-event-native.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2015 Red Hat + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + * Authored by: + * Carlos Garnacho + */ + +#ifndef META_EVENT_NATIVE_H +#define META_EVENT_NATIVE_H + +#include "clutter/clutter.h" + +typedef struct _MetaEventNative MetaEventNative; + +MetaEventNative * meta_event_native_copy (MetaEventNative *event_evdev); +void meta_event_native_free (MetaEventNative *event_evdev); + +guint32 meta_event_native_get_event_code (const ClutterEvent *event); +void meta_event_native_set_event_code (ClutterEvent *event, + guint32 evcode); +guint64 meta_event_native_get_time_usec (const ClutterEvent *event); +void meta_event_native_set_time_usec (ClutterEvent *event, + guint64 time_usec); +void meta_event_native_set_relative_motion (ClutterEvent *event, + double dx, + double dy, + double dx_unaccel, + double dy_unaccel); +gboolean meta_event_native_get_relative_motion (const ClutterEvent *event, + double *dx, + double *dy, + double *dx_unaccel, + double *dy_unaccel); + +int32_t meta_event_native_sequence_get_slot (const ClutterEventSequence *sequence); + +#endif /* META_EVENT_NATIVE_H */ diff --git a/clutter/clutter/evdev/clutter-input-device-evdev.c b/src/backends/native/meta-input-device-native.c similarity index 73% rename from clutter/clutter/evdev/clutter-input-device-evdev.c rename to src/backends/native/meta-input-device-native.c index f315bfb60..087368952 100644 --- a/clutter/clutter/evdev/clutter-input-device-evdev.c +++ b/src/backends/native/meta-input-device-native.c @@ -1,8 +1,4 @@ /* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * * Copyright (C) 2010 Intel Corp. * Copyright (C) 2014 Jonas Ådahl * @@ -23,27 +19,19 @@ * Author: Jonas Ådahl */ -#include "clutter-build-config.h" +#include "config.h" #include +#include -#include "clutter/clutter-device-manager-private.h" -#include "clutter/clutter-event-private.h" -#include "clutter-private.h" -#include "clutter-evdev.h" -#include "clutter-input-device-tool-evdev.h" +#include "backends/native/meta-input-device-tool-native.h" +#include "backends/native/meta-input-device-native.h" +#include "backends/native/meta-device-manager-native.h" +#include "backends/native/meta-seat-native.h" +#include "clutter/clutter-mutter.h" -#include "clutter-input-device-evdev.h" -#include "clutter-device-manager-evdev.h" - -#include "cairo-gobject.h" - -typedef struct _ClutterInputDeviceClass ClutterInputDeviceEvdevClass; - -#define clutter_input_device_evdev_get_type _clutter_input_device_evdev_get_type - -G_DEFINE_TYPE (ClutterInputDeviceEvdev, - clutter_input_device_evdev, +G_DEFINE_TYPE (MetaInputDeviceNative, + meta_input_device_native, CLUTTER_TYPE_INPUT_DEVICE) enum @@ -58,48 +46,48 @@ static GParamSpec *obj_props[N_PROPS] = { 0 }; typedef struct _SlowKeysEventPending { - ClutterInputDeviceEvdev *device; + MetaInputDeviceNative *device; ClutterEvent *event; ClutterEmitInputDeviceEvent emit_event_func; guint timer; } SlowKeysEventPending; -static void clear_slow_keys (ClutterInputDeviceEvdev *device); -static void stop_bounce_keys (ClutterInputDeviceEvdev *device); -static void stop_toggle_slowkeys (ClutterInputDeviceEvdev *device); -static void stop_mousekeys_move (ClutterInputDeviceEvdev *device); +static void clear_slow_keys (MetaInputDeviceNative *device); +static void stop_bounce_keys (MetaInputDeviceNative *device); +static void stop_toggle_slowkeys (MetaInputDeviceNative *device); +static void stop_mousekeys_move (MetaInputDeviceNative *device); static void -clutter_input_device_evdev_finalize (GObject *object) +meta_input_device_native_finalize (GObject *object) { ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (object); - ClutterInputDeviceEvdev *device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (object); - ClutterDeviceManagerEvdev *manager_evdev = - CLUTTER_DEVICE_MANAGER_EVDEV (device->device_manager); + MetaInputDeviceNative *device_evdev = META_INPUT_DEVICE_NATIVE (object); + MetaDeviceManagerNative *manager_evdev = + META_DEVICE_MANAGER_NATIVE (device->device_manager); if (device_evdev->libinput_device) libinput_device_unref (device_evdev->libinput_device); - clutter_input_device_evdev_release_touch_slots (device_evdev, - g_get_monotonic_time ()); + meta_input_device_native_release_touch_slots (device_evdev, + g_get_monotonic_time ()); - _clutter_device_manager_evdev_release_device_id (manager_evdev, device); + meta_device_manager_native_release_device_id (manager_evdev, device); clear_slow_keys (device_evdev); stop_bounce_keys (device_evdev); stop_toggle_slowkeys (device_evdev); stop_mousekeys_move (device_evdev); - G_OBJECT_CLASS (clutter_input_device_evdev_parent_class)->finalize (object); + G_OBJECT_CLASS (meta_input_device_native_parent_class)->finalize (object); } static void -clutter_input_device_evdev_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +meta_input_device_native_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - ClutterInputDeviceEvdev *device = CLUTTER_INPUT_DEVICE_EVDEV (object); + MetaInputDeviceNative *device = META_INPUT_DEVICE_NATIVE (object); switch (prop_id) { @@ -120,12 +108,12 @@ clutter_input_device_evdev_set_property (GObject *object, } static void -clutter_input_device_evdev_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +meta_input_device_native_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - ClutterInputDeviceEvdev *device = CLUTTER_INPUT_DEVICE_EVDEV (object); + MetaInputDeviceNative *device = META_INPUT_DEVICE_NATIVE (object); switch (prop_id) { @@ -141,9 +129,9 @@ clutter_input_device_evdev_get_property (GObject *object, } static gboolean -clutter_input_device_evdev_keycode_to_evdev (ClutterInputDevice *device, - guint hardware_keycode, - guint *evdev_keycode) +meta_input_device_native_keycode_to_evdev (ClutterInputDevice *device, + guint hardware_keycode, + guint *evdev_keycode) { /* The hardware keycodes from the evdev backend are almost evdev keycodes: we use the evdev keycode file, but xkb rules have an @@ -154,12 +142,12 @@ clutter_input_device_evdev_keycode_to_evdev (ClutterInputDevice *device, } static void -clutter_input_device_evdev_update_from_tool (ClutterInputDevice *device, - ClutterInputDeviceTool *tool) +meta_input_device_native_update_from_tool (ClutterInputDevice *device, + ClutterInputDeviceTool *tool) { - ClutterInputDeviceToolEvdev *evdev_tool; + MetaInputDeviceToolNative *evdev_tool; - evdev_tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (tool); + evdev_tool = META_INPUT_DEVICE_TOOL_NATIVE (tool); g_object_freeze_notify (G_OBJECT (device)); @@ -193,47 +181,47 @@ clutter_input_device_evdev_update_from_tool (ClutterInputDevice *device, } static gboolean -clutter_input_device_evdev_is_mode_switch_button (ClutterInputDevice *device, - guint group, - guint button) +meta_input_device_native_is_mode_switch_button (ClutterInputDevice *device, + guint group, + guint button) { struct libinput_device *libinput_device; struct libinput_tablet_pad_mode_group *mode_group; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); mode_group = libinput_device_tablet_pad_get_mode_group (libinput_device, group); return libinput_tablet_pad_mode_group_button_is_toggle (mode_group, button) != 0; } static gint -clutter_input_device_evdev_get_group_n_modes (ClutterInputDevice *device, - gint group) +meta_input_device_native_get_group_n_modes (ClutterInputDevice *device, + gint group) { struct libinput_device *libinput_device; struct libinput_tablet_pad_mode_group *mode_group; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); mode_group = libinput_device_tablet_pad_get_mode_group (libinput_device, group); return libinput_tablet_pad_mode_group_get_num_modes (mode_group); } static gboolean -clutter_input_device_evdev_is_grouped (ClutterInputDevice *device, - ClutterInputDevice *other_device) +meta_input_device_native_is_grouped (ClutterInputDevice *device, + ClutterInputDevice *other_device) { struct libinput_device *libinput_device, *other_libinput_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); - other_libinput_device = clutter_evdev_input_device_get_libinput_device (other_device); + libinput_device = meta_input_device_native_get_libinput_device (device); + other_libinput_device = meta_input_device_native_get_libinput_device (other_device); return libinput_device_get_device_group (libinput_device) == libinput_device_get_device_group (other_libinput_device); } static void -clutter_input_device_evdev_bell_notify (void) +meta_input_device_native_bell_notify (void) { ClutterBackend *backend; @@ -242,7 +230,7 @@ clutter_input_device_evdev_bell_notify (void) } static void -clutter_input_device_evdev_free_pending_slow_key (gpointer data) +meta_input_device_native_free_pending_slow_key (gpointer data) { SlowKeysEventPending *slow_keys_event = data; @@ -253,9 +241,9 @@ clutter_input_device_evdev_free_pending_slow_key (gpointer data) } static void -clear_slow_keys (ClutterInputDeviceEvdev *device) +clear_slow_keys (MetaInputDeviceNative *device) { - g_list_free_full (device->slow_keys_list, clutter_input_device_evdev_free_pending_slow_key); + g_list_free_full (device->slow_keys_list, meta_input_device_native_free_pending_slow_key); g_list_free (device->slow_keys_list); device->slow_keys_list = NULL; } @@ -275,7 +263,7 @@ static gboolean trigger_slow_keys (gpointer data) { SlowKeysEventPending *slow_keys_event = data; - ClutterInputDeviceEvdev *device = slow_keys_event->device; + MetaInputDeviceNative *device = slow_keys_event->device; ClutterKeyEvent *key_event = (ClutterKeyEvent *) slow_keys_event->event; /* Alter timestamp and emit the event */ @@ -285,10 +273,10 @@ trigger_slow_keys (gpointer data) /* Then remote the pending event */ device->slow_keys_list = g_list_remove (device->slow_keys_list, slow_keys_event); - clutter_input_device_evdev_free_pending_slow_key (slow_keys_event); + meta_input_device_native_free_pending_slow_key (slow_keys_event); if (device->a11y_flags & CLUTTER_A11Y_SLOW_KEYS_BEEP_ACCEPT) - clutter_input_device_evdev_bell_notify (); + meta_input_device_native_bell_notify (); return G_SOURCE_REMOVE; } @@ -305,9 +293,9 @@ find_pending_event_by_keycode (gconstpointer a, } static void -start_slow_keys (ClutterEvent *event, - ClutterInputDeviceEvdev *device, - ClutterEmitInputDeviceEvent emit_event_func) +start_slow_keys (ClutterEvent *event, + MetaInputDeviceNative *device, + ClutterEmitInputDeviceEvent emit_event_func) { SlowKeysEventPending *slow_keys_event; ClutterKeyEvent *key_event = (ClutterKeyEvent *) event; @@ -326,13 +314,13 @@ start_slow_keys (ClutterEvent *event, device->slow_keys_list = g_list_append (device->slow_keys_list, slow_keys_event); if (device->a11y_flags & CLUTTER_A11Y_SLOW_KEYS_BEEP_PRESS) - clutter_input_device_evdev_bell_notify (); + meta_input_device_native_bell_notify (); } static void -stop_slow_keys (ClutterEvent *event, - ClutterInputDeviceEvdev *device, - ClutterEmitInputDeviceEvent emit_event_func) +stop_slow_keys (ClutterEvent *event, + MetaInputDeviceNative *device, + ClutterEmitInputDeviceEvent emit_event_func) { GList *item; @@ -343,10 +331,10 @@ stop_slow_keys (ClutterEvent *event, SlowKeysEventPending *slow_keys_event = item->data; device->slow_keys_list = g_list_delete_link (device->slow_keys_list, item); - clutter_input_device_evdev_free_pending_slow_key (slow_keys_event); + meta_input_device_native_free_pending_slow_key (slow_keys_event); if (device->a11y_flags & CLUTTER_A11Y_SLOW_KEYS_BEEP_REJECT) - clutter_input_device_evdev_bell_notify (); + meta_input_device_native_bell_notify (); return; } @@ -369,7 +357,7 @@ get_debounce_delay (ClutterInputDevice *device) static gboolean clear_bounce_keys (gpointer data) { - ClutterInputDeviceEvdev *device = data; + MetaInputDeviceNative *device = data; device->debounce_key = 0; device->debounce_timer = 0; @@ -378,8 +366,8 @@ clear_bounce_keys (gpointer data) } static void -start_bounce_keys (ClutterEvent *event, - ClutterInputDeviceEvdev *device) +start_bounce_keys (ClutterEvent *event, + MetaInputDeviceNative *device) { stop_bounce_keys (device); @@ -391,7 +379,7 @@ start_bounce_keys (ClutterEvent *event, } static void -stop_bounce_keys (ClutterInputDeviceEvdev *device) +stop_bounce_keys (MetaInputDeviceNative *device) { if (device->debounce_timer) { @@ -401,15 +389,15 @@ stop_bounce_keys (ClutterInputDeviceEvdev *device) } static void -notify_bounce_keys_reject (ClutterInputDeviceEvdev *device) +notify_bounce_keys_reject (MetaInputDeviceNative *device) { if (device->a11y_flags & CLUTTER_A11Y_BOUNCE_KEYS_BEEP_REJECT) - clutter_input_device_evdev_bell_notify (); + meta_input_device_native_bell_notify (); } static gboolean -debounce_key (ClutterEvent *event, - ClutterInputDeviceEvdev *device) +debounce_key (ClutterEvent *event, + MetaInputDeviceNative *device) { return (device->debounce_key == ((ClutterKeyEvent *) event)->hardware_keycode); } @@ -440,7 +428,7 @@ key_event_is_modifier (ClutterEvent *event) } static void -notify_stickykeys_mask (ClutterInputDeviceEvdev *device) +notify_stickykeys_mask (MetaInputDeviceNative *device) { g_signal_emit_by_name (CLUTTER_INPUT_DEVICE (device)->device_manager, "kbd-a11y-mods-state-changed", @@ -449,11 +437,11 @@ notify_stickykeys_mask (ClutterInputDeviceEvdev *device) } static void -update_internal_xkb_state (ClutterInputDeviceEvdev *device, - xkb_mod_mask_t new_latched_mask, - xkb_mod_mask_t new_locked_mask) +update_internal_xkb_state (MetaInputDeviceNative *device, + xkb_mod_mask_t new_latched_mask, + xkb_mod_mask_t new_locked_mask) { - ClutterSeatEvdev *seat = device->seat; + MetaSeatNative *seat = device->seat; xkb_mod_mask_t depressed_mods; xkb_mod_mask_t latched_mods; xkb_mod_mask_t locked_mods; @@ -483,12 +471,12 @@ update_internal_xkb_state (ClutterInputDeviceEvdev *device, } static void -update_stickykeys_event (ClutterEvent *event, - ClutterInputDeviceEvdev *device, - xkb_mod_mask_t new_latched_mask, - xkb_mod_mask_t new_locked_mask) +update_stickykeys_event (ClutterEvent *event, + MetaInputDeviceNative *device, + xkb_mod_mask_t new_latched_mask, + xkb_mod_mask_t new_locked_mask) { - ClutterSeatEvdev *seat = device->seat; + MetaSeatNative *seat = device->seat; xkb_mod_mask_t effective_mods; xkb_mod_mask_t latched_mods; xkb_mod_mask_t locked_mods; @@ -508,7 +496,7 @@ update_stickykeys_event (ClutterEvent *event, } static void -notify_stickykeys_change (ClutterInputDeviceEvdev *device) +notify_stickykeys_change (MetaInputDeviceNative *device) { /* Everytime sticky keys setting is changed, clear the masks */ device->stickykeys_depressed_mask = 0; @@ -521,29 +509,29 @@ notify_stickykeys_change (ClutterInputDeviceEvdev *device) } static void -set_stickykeys_off (ClutterInputDeviceEvdev *device) +set_stickykeys_off (MetaInputDeviceNative *device) { device->a11y_flags &= ~CLUTTER_A11Y_STICKY_KEYS_ENABLED; notify_stickykeys_change (device); } static void -set_stickykeys_on (ClutterInputDeviceEvdev *device) +set_stickykeys_on (MetaInputDeviceNative *device) { device->a11y_flags |= CLUTTER_A11Y_STICKY_KEYS_ENABLED; notify_stickykeys_change (device); } static void -clear_stickykeys_event (ClutterEvent *event, - ClutterInputDeviceEvdev *device) +clear_stickykeys_event (ClutterEvent *event, + MetaInputDeviceNative *device) { set_stickykeys_off (device); update_stickykeys_event (event, device, 0, 0); } static void -set_slowkeys_off (ClutterInputDeviceEvdev *device) +set_slowkeys_off (MetaInputDeviceNative *device) { device->a11y_flags &= ~CLUTTER_A11Y_SLOW_KEYS_ENABLED; @@ -554,7 +542,7 @@ set_slowkeys_off (ClutterInputDeviceEvdev *device) } static void -set_slowkeys_on (ClutterInputDeviceEvdev *device) +set_slowkeys_on (MetaInputDeviceNative *device) { device->a11y_flags |= CLUTTER_A11Y_SLOW_KEYS_ENABLED; @@ -565,10 +553,10 @@ set_slowkeys_on (ClutterInputDeviceEvdev *device) } static void -handle_stickykeys_press (ClutterEvent *event, - ClutterInputDeviceEvdev *device) +handle_stickykeys_press (ClutterEvent *event, + MetaInputDeviceNative *device) { - ClutterSeatEvdev *seat = device->seat; + MetaSeatNative *seat = device->seat; xkb_mod_mask_t depressed_mods; xkb_mod_mask_t new_latched_mask; xkb_mod_mask_t new_locked_mask; @@ -613,10 +601,10 @@ handle_stickykeys_press (ClutterEvent *event, } static void -handle_stickykeys_release (ClutterEvent *event, - ClutterInputDeviceEvdev *device) +handle_stickykeys_release (ClutterEvent *event, + MetaInputDeviceNative *device) { - ClutterSeatEvdev *seat = device->seat; + MetaSeatNative *seat = device->seat; device->stickykeys_depressed_mask = xkb_state_serialize_mods (seat->xkb, XKB_STATE_MODS_DEPRESSED); @@ -624,7 +612,7 @@ handle_stickykeys_release (ClutterEvent *event, if (key_event_is_modifier (event)) { if (device->a11y_flags & CLUTTER_A11Y_STICKY_KEYS_BEEP) - clutter_input_device_evdev_bell_notify (); + meta_input_device_native_bell_notify (); return; } @@ -638,12 +626,12 @@ handle_stickykeys_release (ClutterEvent *event, static gboolean trigger_toggle_slowkeys (gpointer data) { - ClutterInputDeviceEvdev *device = data; + MetaInputDeviceNative *device = data; device->toggle_slowkeys_timer = 0; if (device->a11y_flags & CLUTTER_A11Y_FEATURE_STATE_CHANGE_BEEP) - clutter_input_device_evdev_bell_notify (); + meta_input_device_native_bell_notify (); if (device->a11y_flags & CLUTTER_A11Y_SLOW_KEYS_ENABLED) set_slowkeys_off (device); @@ -654,7 +642,7 @@ trigger_toggle_slowkeys (gpointer data) } static void -start_toggle_slowkeys (ClutterInputDeviceEvdev *device) +start_toggle_slowkeys (MetaInputDeviceNative *device) { if (device->toggle_slowkeys_timer != 0) return; @@ -666,7 +654,7 @@ start_toggle_slowkeys (ClutterInputDeviceEvdev *device) } static void -stop_toggle_slowkeys (ClutterInputDeviceEvdev *device) +stop_toggle_slowkeys (MetaInputDeviceNative *device) { if (device->toggle_slowkeys_timer) { @@ -676,8 +664,8 @@ stop_toggle_slowkeys (ClutterInputDeviceEvdev *device) } static void -handle_enablekeys_press (ClutterEvent *event, - ClutterInputDeviceEvdev *device) +handle_enablekeys_press (ClutterEvent *event, + MetaInputDeviceNative *device) { if (event->key.keyval == XKB_KEY_Shift_L || event->key.keyval == XKB_KEY_Shift_R) { @@ -698,8 +686,8 @@ handle_enablekeys_press (ClutterEvent *event, } static void -handle_enablekeys_release (ClutterEvent *event, - ClutterInputDeviceEvdev *device) +handle_enablekeys_release (ClutterEvent *event, + MetaInputDeviceNative *device) { if (event->key.keyval == XKB_KEY_Shift_L || event->key.keyval == XKB_KEY_Shift_R) { @@ -709,7 +697,7 @@ handle_enablekeys_release (ClutterEvent *event, device->shift_count = 0; if (device->a11y_flags & CLUTTER_A11Y_FEATURE_STATE_CHANGE_BEEP) - clutter_input_device_evdev_bell_notify (); + meta_input_device_native_bell_notify (); if (device->a11y_flags & CLUTTER_A11Y_STICKY_KEYS_ENABLED) set_stickykeys_off (device); @@ -739,7 +727,7 @@ get_button_index (gint button) } static void -emulate_button_press (ClutterInputDeviceEvdev *device_evdev) +emulate_button_press (MetaInputDeviceNative *device_evdev) { ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (device_evdev); gint btn = device_evdev->mousekeys_btn; @@ -754,7 +742,7 @@ emulate_button_press (ClutterInputDeviceEvdev *device_evdev) } static void -emulate_button_release (ClutterInputDeviceEvdev *device_evdev) +emulate_button_release (MetaInputDeviceNative *device_evdev) { ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (device_evdev); gint btn = device_evdev->mousekeys_btn; @@ -769,7 +757,7 @@ emulate_button_release (ClutterInputDeviceEvdev *device_evdev) } static void -emulate_button_click (ClutterInputDeviceEvdev *device) +emulate_button_click (MetaInputDeviceNative *device) { emulate_button_press (device); emulate_button_release (device); @@ -778,8 +766,8 @@ emulate_button_click (ClutterInputDeviceEvdev *device) #define MOUSEKEYS_CURVE (1.0 + (((double) 50.0) * 0.001)) static void -update_mousekeys_params (ClutterInputDeviceEvdev *device, - ClutterKbdA11ySettings *settings) +update_mousekeys_params (MetaInputDeviceNative *device, + ClutterKbdA11ySettings *settings) { /* Prevent us from broken settings values */ device->mousekeys_max_speed = MAX (1, settings->mousekeys_max_speed); @@ -792,8 +780,8 @@ update_mousekeys_params (ClutterInputDeviceEvdev *device, } static gdouble -mousekeys_get_speed_factor (ClutterInputDeviceEvdev *device, - gint64 time_us) +mousekeys_get_speed_factor (MetaInputDeviceNative *device, + gint64 time_us) { guint32 time; gint64 delta_t; @@ -832,9 +820,9 @@ mousekeys_get_speed_factor (ClutterInputDeviceEvdev *device, #undef MOUSEKEYS_CURVE static void -emulate_pointer_motion (ClutterInputDeviceEvdev *device_evdev, - gint dx, - gint dy) +emulate_pointer_motion (MetaInputDeviceNative *device_evdev, + gint dx, + gint dy) { ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (device_evdev); gdouble dx_motion; @@ -859,16 +847,16 @@ emulate_pointer_motion (ClutterInputDeviceEvdev *device_evdev, time_us, dx_motion, dy_motion); } static gboolean -is_numlock_active (ClutterInputDeviceEvdev *device) +is_numlock_active (MetaInputDeviceNative *device) { - ClutterSeatEvdev *seat = device->seat; + MetaSeatNative *seat = device->seat; return xkb_state_mod_name_is_active (seat->xkb, "Mod2", XKB_STATE_MODS_LOCKED); } static void -enable_mousekeys (ClutterInputDeviceEvdev *device_evdev) +enable_mousekeys (MetaInputDeviceNative *device_evdev) { ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (device_evdev); ClutterDeviceManager *manager = device->device_manager; @@ -888,7 +876,7 @@ enable_mousekeys (ClutterInputDeviceEvdev *device_evdev) } static void -disable_mousekeys (ClutterInputDeviceEvdev *device_evdev) +disable_mousekeys (MetaInputDeviceNative *device_evdev) { ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (device_evdev); @@ -920,7 +908,7 @@ disable_mousekeys (ClutterInputDeviceEvdev *device_evdev) static gboolean trigger_mousekeys_move (gpointer data) { - ClutterInputDeviceEvdev *device = data; + MetaInputDeviceNative *device = data; gint dx = 0; gint dy = 0; @@ -995,7 +983,7 @@ trigger_mousekeys_move (gpointer data) } static void -stop_mousekeys_move (ClutterInputDeviceEvdev *device) +stop_mousekeys_move (MetaInputDeviceNative *device) { device->mousekeys_first_motion_time = 0; device->mousekeys_last_motion_time = 0; @@ -1008,8 +996,8 @@ stop_mousekeys_move (ClutterInputDeviceEvdev *device) } static void -start_mousekeys_move (ClutterEvent *event, - ClutterInputDeviceEvdev *device) +start_mousekeys_move (ClutterEvent *event, + MetaInputDeviceNative *device) { device->last_mousekeys_key = event->key.keyval; @@ -1020,8 +1008,8 @@ start_mousekeys_move (ClutterEvent *event, } static gboolean -handle_mousekeys_press (ClutterEvent *event, - ClutterInputDeviceEvdev *device) +handle_mousekeys_press (ClutterEvent *event, + MetaInputDeviceNative *device) { if (!(event->key.flags & CLUTTER_EVENT_FLAG_SYNTHETIC)) stop_mousekeys_move (device); @@ -1098,8 +1086,8 @@ handle_mousekeys_press (ClutterEvent *event, } static gboolean -handle_mousekeys_release (ClutterEvent *event, - ClutterInputDeviceEvdev *device) +handle_mousekeys_release (ClutterEvent *event, + MetaInputDeviceNative *device) { /* Do not handle mousekeys if NumLock is ON */ if (is_numlock_active (device)) @@ -1143,11 +1131,11 @@ handle_mousekeys_release (ClutterEvent *event, } static void -clutter_input_device_evdev_process_kbd_a11y_event (ClutterEvent *event, - ClutterInputDevice *device, - ClutterEmitInputDeviceEvent emit_event_func) +meta_input_device_native_process_kbd_a11y_event (ClutterEvent *event, + ClutterInputDevice *device, + ClutterEmitInputDeviceEvent emit_event_func) { - ClutterInputDeviceEvdev *device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); + MetaInputDeviceNative *device_evdev = META_INPUT_DEVICE_NATIVE (device); /* Ignore key events injected from IM */ if (event->key.flags & CLUTTER_EVENT_FLAG_INPUT_METHOD) @@ -1208,8 +1196,8 @@ emit_event: } void -clutter_input_device_evdev_apply_kbd_a11y_settings (ClutterInputDeviceEvdev *device, - ClutterKbdA11ySettings *settings) +meta_input_device_native_apply_kbd_a11y_settings (MetaInputDeviceNative *device, + ClutterKbdA11ySettings *settings) { ClutterKeyboardA11yFlags changed_flags = (device->a11y_flags ^ settings->controls); @@ -1247,28 +1235,28 @@ clutter_input_device_evdev_apply_kbd_a11y_settings (ClutterInputDeviceEvdev *dev } void -clutter_evdev_a11y_maybe_notify_toggle_keys (ClutterInputDeviceEvdev *device) +meta_input_device_native_a11y_maybe_notify_toggle_keys (MetaInputDeviceNative *device) { if (device->a11y_flags & CLUTTER_A11Y_TOGGLE_KEYS_ENABLED) - clutter_input_device_evdev_bell_notify (); + meta_input_device_native_bell_notify (); } static void release_device_touch_slot (gpointer value) { - ClutterTouchState *touch_state = value; + MetaTouchState *touch_state = value; - clutter_seat_evdev_release_touch_state (touch_state->seat, touch_state); + meta_seat_native_release_touch_state (touch_state->seat, touch_state); } -ClutterTouchState * -clutter_input_device_evdev_acquire_touch_state (ClutterInputDeviceEvdev *device, - int device_slot) +MetaTouchState * +meta_input_device_native_acquire_touch_state (MetaInputDeviceNative *device, + int device_slot) { - ClutterTouchState *touch_state; + MetaTouchState *touch_state; - touch_state = clutter_seat_evdev_acquire_touch_state (device->seat, - device_slot); + touch_state = meta_seat_native_acquire_touch_state (device->seat, + device_slot); g_hash_table_insert (device->touches, GINT_TO_POINTER (device_slot), touch_state); @@ -1276,36 +1264,37 @@ clutter_input_device_evdev_acquire_touch_state (ClutterInputDeviceEvdev *device, return touch_state; } -ClutterTouchState * -clutter_input_device_evdev_lookup_touch_state (ClutterInputDeviceEvdev *device, - int device_slot) +MetaTouchState * +meta_input_device_native_lookup_touch_state (MetaInputDeviceNative *device, + int device_slot) { return g_hash_table_lookup (device->touches, GINT_TO_POINTER (device_slot)); } void -clutter_input_device_evdev_release_touch_state (ClutterInputDeviceEvdev *device, - ClutterTouchState *touch_state) +meta_input_device_native_release_touch_state (MetaInputDeviceNative *device, + MetaTouchState *touch_state) { g_hash_table_remove (device->touches, GINT_TO_POINTER (touch_state->device_slot)); } static void -clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass) +meta_input_device_native_class_init (MetaInputDeviceNativeClass *klass) { + ClutterInputDeviceClass *device_manager_class = CLUTTER_INPUT_DEVICE_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->finalize = clutter_input_device_evdev_finalize; - object_class->set_property = clutter_input_device_evdev_set_property; - object_class->get_property = clutter_input_device_evdev_get_property; + object_class->finalize = meta_input_device_native_finalize; + object_class->set_property = meta_input_device_native_set_property; + object_class->get_property = meta_input_device_native_get_property; - klass->keycode_to_evdev = clutter_input_device_evdev_keycode_to_evdev; - klass->update_from_tool = clutter_input_device_evdev_update_from_tool; - klass->is_mode_switch_button = clutter_input_device_evdev_is_mode_switch_button; - klass->get_group_n_modes = clutter_input_device_evdev_get_group_n_modes; - klass->is_grouped = clutter_input_device_evdev_is_grouped; - klass->process_kbd_a11y_event = clutter_input_device_evdev_process_kbd_a11y_event; + device_manager_class->keycode_to_evdev = meta_input_device_native_keycode_to_evdev; + device_manager_class->update_from_tool = meta_input_device_native_update_from_tool; + device_manager_class->is_mode_switch_button = meta_input_device_native_is_mode_switch_button; + device_manager_class->get_group_n_modes = meta_input_device_native_get_group_n_modes; + device_manager_class->is_grouped = meta_input_device_native_is_grouped; + device_manager_class->process_kbd_a11y_event = meta_input_device_native_process_kbd_a11y_event; obj_props[PROP_DEVICE_MATRIX] = g_param_spec_boxed ("device-matrix", @@ -1324,7 +1313,7 @@ clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass) } static void -clutter_input_device_evdev_init (ClutterInputDeviceEvdev *self) +meta_input_device_native_init (MetaInputDeviceNative *self) { cairo_matrix_init_identity (&self->device_matrix); self->device_aspect_ratio = 0; @@ -1335,7 +1324,7 @@ clutter_input_device_evdev_init (ClutterInputDeviceEvdev *self) } /* - * _clutter_input_device_evdev_new: + * meta_input_device_native_new: * @manager: the device manager * @seat: the seat the device will belong to * @libinput_device: the libinput device @@ -1344,23 +1333,23 @@ clutter_input_device_evdev_init (ClutterInputDeviceEvdev *self) * it with the provided seat. */ ClutterInputDevice * -_clutter_input_device_evdev_new (ClutterDeviceManager *manager, - ClutterSeatEvdev *seat, - struct libinput_device *libinput_device) +meta_input_device_native_new (ClutterDeviceManager *manager, + MetaSeatNative *seat, + struct libinput_device *libinput_device) { - ClutterInputDeviceEvdev *device; + MetaInputDeviceNative *device; ClutterInputDeviceType type; - ClutterDeviceManagerEvdev *manager_evdev; + MetaDeviceManagerNative *manager_evdev; gchar *vendor, *product; gint device_id, n_rings = 0, n_strips = 0, n_groups = 1; gchar *node_path; gdouble width, height; - type = _clutter_input_device_evdev_determine_type (libinput_device); + type = meta_input_device_native_determine_type (libinput_device); vendor = g_strdup_printf ("%.4x", libinput_device_get_id_vendor (libinput_device)); product = g_strdup_printf ("%.4x", libinput_device_get_id_product (libinput_device)); - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); - device_id = _clutter_device_manager_evdev_acquire_device_id (manager_evdev); + manager_evdev = META_DEVICE_MANAGER_NATIVE (manager); + device_id = meta_device_manager_native_acquire_device_id (manager_evdev); node_path = g_strdup_printf ("/dev/input/%s", libinput_device_get_sysname (libinput_device)); if (libinput_device_has_capability (libinput_device, @@ -1371,7 +1360,7 @@ _clutter_input_device_evdev_new (ClutterDeviceManager *manager, n_groups = libinput_device_tablet_pad_get_num_mode_groups (libinput_device); } - device = g_object_new (CLUTTER_TYPE_INPUT_DEVICE_EVDEV, + device = g_object_new (META_TYPE_INPUT_DEVICE_NATIVE, "id", device_id, "name", libinput_device_get_name (libinput_device), "device-manager", manager, @@ -1402,7 +1391,7 @@ _clutter_input_device_evdev_new (ClutterDeviceManager *manager, } /* - * _clutter_input_device_evdev_new_virtual: + * meta_input_device_native_new_virtual: * @manager: the device manager * @seat: the seat the device will belong to * @type: the input device type @@ -1410,13 +1399,13 @@ _clutter_input_device_evdev_new (ClutterDeviceManager *manager, * Create a new virtual ClutterInputDevice of the given type. */ ClutterInputDevice * -_clutter_input_device_evdev_new_virtual (ClutterDeviceManager *manager, - ClutterSeatEvdev *seat, - ClutterInputDeviceType type, - ClutterInputMode mode) +meta_input_device_native_new_virtual (ClutterDeviceManager *manager, + MetaSeatNative *seat, + ClutterInputDeviceType type, + ClutterInputMode mode) { - ClutterInputDeviceEvdev *device; - ClutterDeviceManagerEvdev *manager_evdev; + MetaInputDeviceNative *device; + MetaDeviceManagerNative *manager_evdev; const char *name; gint device_id; @@ -1436,9 +1425,9 @@ _clutter_input_device_evdev_new_virtual (ClutterDeviceManager *manager, break; }; - manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); - device_id = _clutter_device_manager_evdev_acquire_device_id (manager_evdev); - device = g_object_new (CLUTTER_TYPE_INPUT_DEVICE_EVDEV, + manager_evdev = META_DEVICE_MANAGER_NATIVE (manager); + device_id = meta_device_manager_native_acquire_device_id (manager_evdev); + device = g_object_new (META_TYPE_INPUT_DEVICE_NATIVE, "id", device_id, "name", name, "device-manager", manager, @@ -1452,15 +1441,15 @@ _clutter_input_device_evdev_new_virtual (ClutterDeviceManager *manager, return CLUTTER_INPUT_DEVICE (device); } -ClutterSeatEvdev * -_clutter_input_device_evdev_get_seat (ClutterInputDeviceEvdev *device) +MetaSeatNative * +meta_input_device_native_get_seat (MetaInputDeviceNative *device) { return device->seat; } void -_clutter_input_device_evdev_update_leds (ClutterInputDeviceEvdev *device, - enum libinput_led leds) +meta_input_device_native_update_leds (MetaInputDeviceNative *device, + enum libinput_led leds) { if (!device->libinput_device) return; @@ -1469,7 +1458,7 @@ _clutter_input_device_evdev_update_leds (ClutterInputDeviceEvdev *device, } ClutterInputDeviceType -_clutter_input_device_evdev_determine_type (struct libinput_device *ldev) +meta_input_device_native_determine_type (struct libinput_device *ldev) { /* This setting is specific to touchpads and alike, only in these * devices there is this additional layer of touch event interpretation. @@ -1491,7 +1480,7 @@ _clutter_input_device_evdev_determine_type (struct libinput_device *ldev) } /** - * clutter_evdev_input_device_get_libinput_device: + * meta_input_device_native_get_libinput_device: * @device: a #ClutterInputDevice * * Retrieves the libinput_device struct held in @device. @@ -1502,44 +1491,24 @@ _clutter_input_device_evdev_determine_type (struct libinput_device *ldev) * Stability: unstable **/ struct libinput_device * -clutter_evdev_input_device_get_libinput_device (ClutterInputDevice *device) +meta_input_device_native_get_libinput_device (ClutterInputDevice *device) { - ClutterInputDeviceEvdev *device_evdev; + MetaInputDeviceNative *device_evdev; - g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE_EVDEV (device), NULL); + g_return_val_if_fail (META_IS_INPUT_DEVICE_NATIVE (device), NULL); - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); + device_evdev = META_INPUT_DEVICE_NATIVE (device); return device_evdev->libinput_device; } -/** - * clutter_evdev_event_sequence_get_slot: - * @sequence: a #ClutterEventSequence - * - * Retrieves the touch slot triggered by this @sequence - * - * Returns: the libinput touch slot. - * - * Since: 1.20 - * Stability: unstable - **/ -gint32 -clutter_evdev_event_sequence_get_slot (const ClutterEventSequence *sequence) -{ - if (!sequence) - return -1; - - return GPOINTER_TO_INT (sequence) - 1; -} - void -clutter_input_device_evdev_translate_coordinates (ClutterInputDevice *device, - ClutterStage *stage, - gfloat *x, - gfloat *y) +meta_input_device_native_translate_coordinates (ClutterInputDevice *device, + ClutterStage *stage, + gfloat *x, + gfloat *y) { - ClutterInputDeviceEvdev *device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); + MetaInputDeviceNative *device_evdev = META_INPUT_DEVICE_NATIVE (device); double min_x = 0, min_y = 0, max_x = 1, max_y = 1; gdouble stage_width, stage_height; double x_d, y_d; @@ -1570,22 +1539,22 @@ clutter_input_device_evdev_translate_coordinates (ClutterInputDevice *device, } void -clutter_input_device_evdev_release_touch_slots (ClutterInputDeviceEvdev *device_evdev, - uint64_t time_us) +meta_input_device_native_release_touch_slots (MetaInputDeviceNative *device_evdev, + uint64_t time_us) { GHashTableIter iter; - ClutterTouchState *touch_state; + MetaTouchState *touch_state; g_hash_table_iter_init (&iter, device_evdev->touches); while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &touch_state)) { - clutter_seat_evdev_notify_touch_event (touch_state->seat, - CLUTTER_INPUT_DEVICE (device_evdev), - CLUTTER_TOUCH_CANCEL, - time_us, - touch_state->seat_slot, - touch_state->coords.x, - touch_state->coords.y); + meta_seat_native_notify_touch_event (touch_state->seat, + CLUTTER_INPUT_DEVICE (device_evdev), + CLUTTER_TOUCH_CANCEL, + time_us, + touch_state->seat_slot, + touch_state->coords.x, + touch_state->coords.y); g_hash_table_iter_remove (&iter); } } diff --git a/src/backends/native/meta-input-device-native.h b/src/backends/native/meta-input-device-native.h new file mode 100644 index 000000000..bb1705a7c --- /dev/null +++ b/src/backends/native/meta-input-device-native.h @@ -0,0 +1,145 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Copyright (C) 2010 Intel Corp. + * Copyright (C) 2014 Jonas Ådahl + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + * Author: Damien Lespiau + * Author: Jonas Ådahl + */ + +#ifndef META_INPUT_DEVICE_NATIVE_H +#define META_INPUT_DEVICE_NATIVE_H + +#include + +#include "backends/native/meta-seat-native.h" +#include "clutter/clutter-mutter.h" + +#define META_TYPE_INPUT_DEVICE_NATIVE meta_input_device_native_get_type() + +#define META_INPUT_DEVICE_NATIVE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + META_TYPE_INPUT_DEVICE_NATIVE, MetaInputDeviceNative)) + +#define META_INPUT_DEVICE_NATIVE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + META_TYPE_INPUT_DEVICE_NATIVE, MetaInputDeviceNativeClass)) + +#define META_IS_INPUT_DEVICE_NATIVE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + META_TYPE_INPUT_DEVICE_NATIVE)) + +#define META_IS_INPUT_DEVICE_NATIVE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + META_TYPE_INPUT_DEVICE_NATIVE)) + +#define META_INPUT_DEVICE_NATIVE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + META_TYPE_INPUT_DEVICE_NATIVE, MetaInputDeviceNativeClass)) + +typedef struct _MetaInputDeviceNative MetaInputDeviceNative; +typedef struct _MetaInputDeviceNativeClass MetaInputDeviceNativeClass; + +struct _MetaInputDeviceNative +{ + ClutterInputDevice parent; + + struct libinput_device *libinput_device; + MetaSeatNative *seat; + ClutterInputDeviceTool *last_tool; + + cairo_matrix_t device_matrix; + gdouble device_aspect_ratio; /* w:h */ + gdouble output_ratio; /* w:h */ + + GHashTable *touches; + + /* Keyboard a11y */ + ClutterKeyboardA11yFlags a11y_flags; + GList *slow_keys_list; + guint debounce_timer; + guint16 debounce_key; + xkb_mod_mask_t stickykeys_depressed_mask; + xkb_mod_mask_t stickykeys_latched_mask; + xkb_mod_mask_t stickykeys_locked_mask; + guint toggle_slowkeys_timer; + guint16 shift_count; + guint32 last_shift_time; + gint mousekeys_btn; + gboolean mousekeys_btn_states[3]; + guint32 mousekeys_first_motion_time; /* ms */ + guint32 mousekeys_last_motion_time; /* ms */ + guint mousekeys_init_delay; + guint mousekeys_accel_time; + guint mousekeys_max_speed; + gdouble mousekeys_curve_factor; + guint move_mousekeys_timer; + guint16 last_mousekeys_key; +}; + +struct _MetaInputDeviceNativeClass +{ + ClutterInputDeviceClass parent_class; +}; + + +GType meta_input_device_native_get_type (void) G_GNUC_CONST; + +ClutterInputDevice * meta_input_device_native_new (ClutterDeviceManager *manager, + MetaSeatNative *seat, + struct libinput_device *libinput_device); + +ClutterInputDevice * meta_input_device_native_new_virtual (ClutterDeviceManager *manager, + MetaSeatNative *seat, + ClutterInputDeviceType type, + ClutterInputMode mode); + +MetaSeatNative * meta_input_device_native_get_seat (MetaInputDeviceNative *device); + +void meta_input_device_native_update_leds (MetaInputDeviceNative *device, + enum libinput_led leds); + +ClutterInputDeviceType meta_input_device_native_determine_type (struct libinput_device *libinput_device); + + +void meta_input_device_native_translate_coordinates (ClutterInputDevice *device, + ClutterStage *stage, + gfloat *x, + gfloat *y); + +void meta_input_device_native_apply_kbd_a11y_settings (MetaInputDeviceNative *device, + ClutterKbdA11ySettings *settings); + +MetaTouchState * meta_input_device_native_acquire_touch_state (MetaInputDeviceNative *device, + int device_slot); + +MetaTouchState * meta_input_device_native_lookup_touch_state (MetaInputDeviceNative *device, + int device_slot); + +void meta_input_device_native_release_touch_state (MetaInputDeviceNative *device, + MetaTouchState *touch_state); + +void meta_input_device_native_release_touch_slots (MetaInputDeviceNative *device_evdev, + uint64_t time_us); + +void meta_input_device_native_a11y_maybe_notify_toggle_keys (MetaInputDeviceNative *device_evdev); + +struct libinput_device * meta_input_device_native_get_libinput_device (ClutterInputDevice *device); + +#endif /* META_INPUT_DEVICE_NATIVE_H */ diff --git a/clutter/clutter/evdev/clutter-input-device-tool-evdev.c b/src/backends/native/meta-input-device-tool-native.c similarity index 56% rename from clutter/clutter/evdev/clutter-input-device-tool-evdev.c rename to src/backends/native/meta-input-device-tool-native.c index df100f2fe..8a2e844cd 100644 --- a/clutter/clutter/evdev/clutter-input-device-tool-evdev.c +++ b/src/backends/native/meta-input-device-tool-native.c @@ -1,8 +1,4 @@ /* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * * Copyright © 2009, 2010, 2011 Intel Corp. * * This library is free software; you can redistribute it and/or @@ -21,47 +17,46 @@ * Author: Carlos Garnacho */ -#include "clutter-build-config.h" +#include "config.h" -#include "clutter-input-device-tool-evdev.h" -#include "clutter-evdev.h" +#include "backends/native/meta-input-device-tool-native.h" -G_DEFINE_TYPE (ClutterInputDeviceToolEvdev, clutter_input_device_tool_evdev, +G_DEFINE_TYPE (MetaInputDeviceToolNative, meta_input_device_tool_native, CLUTTER_TYPE_INPUT_DEVICE_TOOL) static void -clutter_input_device_tool_evdev_finalize (GObject *object) +meta_input_device_tool_native_finalize (GObject *object) { - ClutterInputDeviceToolEvdev *tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (object); + MetaInputDeviceToolNative *tool = META_INPUT_DEVICE_TOOL_NATIVE (object); g_hash_table_unref (tool->button_map); libinput_tablet_tool_unref (tool->tool); - G_OBJECT_CLASS (clutter_input_device_tool_evdev_parent_class)->finalize (object); + G_OBJECT_CLASS (meta_input_device_tool_native_parent_class)->finalize (object); } static void -clutter_input_device_tool_evdev_class_init (ClutterInputDeviceToolEvdevClass *klass) +meta_input_device_tool_native_class_init (MetaInputDeviceToolNativeClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->finalize = clutter_input_device_tool_evdev_finalize; + object_class->finalize = meta_input_device_tool_native_finalize; } static void -clutter_input_device_tool_evdev_init (ClutterInputDeviceToolEvdev *tool) +meta_input_device_tool_native_init (MetaInputDeviceToolNative *tool) { tool->button_map = g_hash_table_new (NULL, NULL); } ClutterInputDeviceTool * -clutter_input_device_tool_evdev_new (struct libinput_tablet_tool *tool, - guint64 serial, - ClutterInputDeviceToolType type) +meta_input_device_tool_native_new (struct libinput_tablet_tool *tool, + guint64 serial, + ClutterInputDeviceToolType type) { - ClutterInputDeviceToolEvdev *evdev_tool; + MetaInputDeviceToolNative *evdev_tool; - evdev_tool = g_object_new (CLUTTER_TYPE_INPUT_DEVICE_TOOL_EVDEV, + evdev_tool = g_object_new (META_TYPE_INPUT_DEVICE_TOOL_NATIVE, "type", type, "serial", serial, "id", libinput_tablet_tool_get_tool_id (tool), @@ -73,18 +68,18 @@ clutter_input_device_tool_evdev_new (struct libinput_tablet_tool *tool, } void -clutter_evdev_input_device_tool_set_pressure_curve (ClutterInputDeviceTool *tool, - gdouble curve[4]) +meta_input_device_tool_native_set_pressure_curve (ClutterInputDeviceTool *tool, + gdouble curve[4]) { - ClutterInputDeviceToolEvdev *evdev_tool; + MetaInputDeviceToolNative *evdev_tool; - g_return_if_fail (CLUTTER_IS_INPUT_DEVICE_TOOL_EVDEV (tool)); + g_return_if_fail (META_IS_INPUT_DEVICE_TOOL_NATIVE (tool)); g_return_if_fail (curve[0] >= 0 && curve[0] <= 1 && curve[1] >= 0 && curve[1] <= 1 && curve[2] >= 0 && curve[2] <= 1 && curve[3] >= 0 && curve[3] <= 1); - evdev_tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (tool); + evdev_tool = META_INPUT_DEVICE_TOOL_NATIVE (tool); evdev_tool->pressure_curve[0] = curve[0]; evdev_tool->pressure_curve[1] = curve[1]; evdev_tool->pressure_curve[2] = curve[2]; @@ -92,15 +87,15 @@ clutter_evdev_input_device_tool_set_pressure_curve (ClutterInputDeviceTool *tool } void -clutter_evdev_input_device_tool_set_button_code (ClutterInputDeviceTool *tool, - guint button, - guint evcode) +meta_input_device_tool_native_set_button_code (ClutterInputDeviceTool *tool, + guint button, + guint evcode) { - ClutterInputDeviceToolEvdev *evdev_tool; + MetaInputDeviceToolNative *evdev_tool; - g_return_if_fail (CLUTTER_IS_INPUT_DEVICE_TOOL_EVDEV (tool)); + g_return_if_fail (META_IS_INPUT_DEVICE_TOOL_NATIVE (tool)); - evdev_tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (tool); + evdev_tool = META_INPUT_DEVICE_TOOL_NATIVE (tool); if (evcode == 0) { @@ -135,14 +130,14 @@ calculate_bezier_position (gdouble pos, } gdouble -clutter_input_device_tool_evdev_translate_pressure (ClutterInputDeviceTool *tool, - gdouble pressure) +meta_input_device_tool_native_translate_pressure (ClutterInputDeviceTool *tool, + gdouble pressure) { - ClutterInputDeviceToolEvdev *evdev_tool; + MetaInputDeviceToolNative *evdev_tool; - g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE_TOOL (tool), pressure); + g_return_val_if_fail (META_IS_INPUT_DEVICE_TOOL_NATIVE (tool), pressure); - evdev_tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (tool); + evdev_tool = META_INPUT_DEVICE_TOOL_NATIVE (tool); return calculate_bezier_position (CLAMP (pressure, 0, 1), evdev_tool->pressure_curve[0], @@ -152,14 +147,14 @@ clutter_input_device_tool_evdev_translate_pressure (ClutterInputDeviceTool *tool } guint -clutter_input_device_tool_evdev_get_button_code (ClutterInputDeviceTool *tool, - guint button) +meta_input_device_tool_native_get_button_code (ClutterInputDeviceTool *tool, + guint button) { - ClutterInputDeviceToolEvdev *evdev_tool; + MetaInputDeviceToolNative *evdev_tool; - g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE_TOOL (tool), 0); + g_return_val_if_fail (META_IS_INPUT_DEVICE_TOOL_NATIVE (tool), 0); - evdev_tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (tool); + evdev_tool = META_INPUT_DEVICE_TOOL_NATIVE (tool); return GPOINTER_TO_UINT (g_hash_table_lookup (evdev_tool->button_map, GUINT_TO_POINTER (button))); diff --git a/src/backends/native/meta-input-device-tool-native.h b/src/backends/native/meta-input-device-tool-native.h new file mode 100644 index 000000000..49a28e14f --- /dev/null +++ b/src/backends/native/meta-input-device-tool-native.h @@ -0,0 +1,86 @@ +/* + * Copyright © 2009, 2010, 2011 Intel Corp. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + * Author: Carlos Garnacho + */ + +#ifndef META_INPUT_DEVICE_NATIVE_TOOL_H +#define META_INPUT_DEVICE_NATIVE_TOOL_H + +#include + +#include "clutter/clutter.h" + +G_BEGIN_DECLS + +#define META_TYPE_INPUT_DEVICE_TOOL_NATIVE (meta_input_device_tool_native_get_type ()) + +#define META_INPUT_DEVICE_TOOL_NATIVE(o) \ + (G_TYPE_CHECK_INSTANCE_CAST ((o), \ + META_TYPE_INPUT_DEVICE_TOOL_NATIVE, MetaInputDeviceToolNative)) + +#define META_IS_INPUT_DEVICE_TOOL_NATIVE(o) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((o), \ + META_TYPE_INPUT_DEVICE_TOOL_NATIVE)) + +#define META_INPUT_DEVICE_TOOL_NATIVE_CLASS(c) \ + (G_TYPE_CHECK_CLASS_CAST ((c), \ + META_TYPE_INPUT_DEVICE_TOOL_EVDEV, MetaInputDeviceToolNativeClass)) + +#define META_IS_INPUT_DEVICE_TOOL_NATIVE_CLASS(c) \ + (G_TYPE_CHECK_CLASS_TYPE ((c), \ + META_TYPE_INPUT_DEVICE_TOOL_NATIVE)) + +#define META_INPUT_DEVICE_TOOL_NATIVE_GET_CLASS(o) \ + (G_TYPE_INSTANCE_GET_CLASS ((o), \ + META_TYPE_INPUT_DEVICE_TOOL_NATIVE, MetaInputDeviceToolNativeClass)) + +typedef struct _MetaInputDeviceToolNative MetaInputDeviceToolNative; +typedef struct _MetaInputDeviceToolNativeClass MetaInputDeviceToolNativeClass; + +struct _MetaInputDeviceToolNative +{ + ClutterInputDeviceTool parent_instance; + struct libinput_tablet_tool *tool; + GHashTable *button_map; + gdouble pressure_curve[4]; +}; + +struct _MetaInputDeviceToolNativeClass +{ + ClutterInputDeviceToolClass parent_class; +}; + +GType meta_input_device_tool_native_get_type (void) G_GNUC_CONST; + +ClutterInputDeviceTool * meta_input_device_tool_native_new (struct libinput_tablet_tool *tool, + guint64 serial, + ClutterInputDeviceToolType type); + +gdouble meta_input_device_tool_native_translate_pressure (ClutterInputDeviceTool *tool, + gdouble pressure); +guint meta_input_device_tool_native_get_button_code (ClutterInputDeviceTool *tool, + guint button); + +void meta_input_device_tool_native_set_pressure_curve (ClutterInputDeviceTool *tool, + gdouble curve[4]); +void meta_input_device_tool_native_set_button_code (ClutterInputDeviceTool *tool, + guint button, + guint evcode); + +G_END_DECLS + +#endif /* META_INPUT_DEVICE_NATIVE_TOOL_H */ diff --git a/src/backends/native/meta-input-settings-native.c b/src/backends/native/meta-input-settings-native.c index 0e00c0202..4c980cbab 100644 --- a/src/backends/native/meta-input-settings-native.c +++ b/src/backends/native/meta-input-settings-native.c @@ -28,8 +28,9 @@ #include "backends/meta-logical-monitor.h" #include "backends/native/meta-backend-native.h" +#include "backends/native/meta-input-device-native.h" +#include "backends/native/meta-input-device-tool-native.h" #include "backends/native/meta-input-settings-native.h" -#include "clutter/evdev/clutter-evdev.h" G_DEFINE_TYPE (MetaInputSettingsNative, meta_input_settings_native, META_TYPE_INPUT_SETTINGS) @@ -56,7 +57,7 @@ meta_input_settings_native_set_send_events (MetaInputSettings *settings, g_assert_not_reached (); } - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return; libinput_device_config_send_events_set_mode (libinput_device, libinput_mode); @@ -81,7 +82,7 @@ meta_input_settings_native_set_speed (MetaInputSettings *settings, { struct libinput_device *libinput_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return; libinput_device_config_accel_set_speed (libinput_device, @@ -95,7 +96,7 @@ meta_input_settings_native_set_left_handed (MetaInputSettings *settings, { struct libinput_device *libinput_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return; @@ -110,7 +111,7 @@ meta_input_settings_native_set_tap_enabled (MetaInputSettings *settings, { struct libinput_device *libinput_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return; @@ -128,7 +129,7 @@ meta_input_settings_native_set_tap_and_drag_enabled (MetaInputSettings *setting { struct libinput_device *libinput_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return; @@ -146,7 +147,7 @@ meta_input_settings_native_set_disable_while_typing (MetaInputSettings *setting { struct libinput_device *libinput_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return; @@ -165,7 +166,7 @@ meta_input_settings_native_set_invert_scroll (MetaInputSettings *settings, { struct libinput_device *libinput_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return; @@ -200,7 +201,7 @@ meta_input_settings_native_set_edge_scroll (MetaInputSettings *settin struct libinput_device *libinput_device; enum libinput_config_scroll_method current, method; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); method = edge_scrolling_enabled ? LIBINPUT_CONFIG_SCROLL_EDGE : LIBINPUT_CONFIG_SCROLL_NO_SCROLL; current = libinput_device_config_scroll_get_method (libinput_device); @@ -217,7 +218,7 @@ meta_input_settings_native_set_two_finger_scroll (MetaInputSettings * struct libinput_device *libinput_device; enum libinput_config_scroll_method current, method; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); method = two_finger_scroll_enabled ? LIBINPUT_CONFIG_SCROLL_2FG : LIBINPUT_CONFIG_SCROLL_NO_SCROLL; current = libinput_device_config_scroll_get_method (libinput_device); @@ -232,7 +233,7 @@ meta_input_settings_native_has_two_finger_scroll (MetaInputSettings *settings, { struct libinput_device *libinput_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return FALSE; @@ -248,7 +249,7 @@ meta_input_settings_native_set_scroll_button (MetaInputSettings *settings, enum libinput_config_scroll_method method; guint evcode; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return; @@ -282,7 +283,7 @@ meta_input_settings_native_set_click_method (MetaInputSettings *settin enum libinput_config_click_method click_method = 0; struct libinput_device *libinput_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return; @@ -316,7 +317,7 @@ meta_input_settings_native_set_keyboard_repeat (MetaInputSettings *settings, { ClutterDeviceManager *manager = clutter_device_manager_get_default (); - clutter_evdev_set_keyboard_repeat (manager, enabled, delay, interval); + meta_device_manager_native_set_keyboard_repeat (manager, enabled, delay, interval); } static void @@ -327,7 +328,7 @@ set_device_accel_profile (ClutterInputDevice *device, enum libinput_config_accel_profile libinput_profile; uint32_t profiles; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); switch (profile) { @@ -363,7 +364,7 @@ has_udev_property (ClutterInputDevice *device, struct udev_device *udev_device; struct udev_device *parent_udev_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device) return FALSE; @@ -500,7 +501,7 @@ meta_input_settings_native_set_tablet_area (MetaInputSettings *settings, gfloat matrix[6] = { scale_x, 0., offset_x, 0., scale_y, offset_y }; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); if (!libinput_device || !libinput_device_config_calibration_has_matrix (libinput_device)) return; @@ -521,7 +522,7 @@ meta_input_settings_native_set_stylus_pressure (MetaInputSettings *settings pressure_curve[2] = (gdouble) curve[2] / 100; pressure_curve[3] = (gdouble) curve[3] / 100; - clutter_evdev_input_device_tool_set_pressure_curve (tool, pressure_curve); + meta_input_device_tool_native_set_pressure_curve (tool, pressure_curve); } static guint @@ -551,12 +552,12 @@ meta_input_settings_native_set_stylus_button_map (MetaInputSettings *se GDesktopStylusButtonAction secondary, GDesktopStylusButtonAction tertiary) { - clutter_evdev_input_device_tool_set_button_code (tool, CLUTTER_BUTTON_MIDDLE, - action_to_evcode (primary)); - clutter_evdev_input_device_tool_set_button_code (tool, CLUTTER_BUTTON_SECONDARY, - action_to_evcode (secondary)); - clutter_evdev_input_device_tool_set_button_code (tool, 8, /* Back */ - action_to_evcode (tertiary)); + meta_input_device_tool_native_set_button_code (tool, CLUTTER_BUTTON_MIDDLE, + action_to_evcode (primary)); + meta_input_device_tool_native_set_button_code (tool, CLUTTER_BUTTON_SECONDARY, + action_to_evcode (secondary)); + meta_input_device_tool_native_set_button_code (tool, 8, /* Back */ + action_to_evcode (tertiary)); } static void diff --git a/clutter/clutter/evdev/clutter-keymap-evdev.c b/src/backends/native/meta-keymap-native.c similarity index 61% rename from clutter/clutter/evdev/clutter-keymap-evdev.c rename to src/backends/native/meta-keymap-native.c index 7f67bf2a3..35df9f373 100644 --- a/clutter/clutter/evdev/clutter-keymap-evdev.c +++ b/src/backends/native/meta-keymap-native.c @@ -19,46 +19,46 @@ * Author: Carlos Garnacho */ -#include "clutter-build-config.h" +#include "config.h" -#include "clutter-device-manager-evdev.h" -#include "clutter-keymap-evdev.h" +#include "backends/native/meta-device-manager-native.h" +#include "backends/native/meta-keymap-native.h" static const char *option_xkb_layout = "us"; static const char *option_xkb_variant = ""; static const char *option_xkb_options = ""; -typedef struct _ClutterKeymapEvdev ClutterKeymapEvdev; +typedef struct _MetaKeymapNative MetaKeymapNative; -struct _ClutterKeymapEvdev +struct _MetaKeymapNative { ClutterKeymap parent_instance; struct xkb_keymap *keymap; }; -G_DEFINE_TYPE (ClutterKeymapEvdev, clutter_keymap_evdev, +G_DEFINE_TYPE (MetaKeymapNative, meta_keymap_native, CLUTTER_TYPE_KEYMAP) static void -clutter_keymap_evdev_finalize (GObject *object) +meta_keymap_native_finalize (GObject *object) { - ClutterKeymapEvdev *keymap = CLUTTER_KEYMAP_EVDEV (object); + MetaKeymapNative *keymap = META_KEYMAP_NATIVE (object); xkb_keymap_unref (keymap->keymap); - G_OBJECT_CLASS (clutter_keymap_evdev_parent_class)->finalize (object); + G_OBJECT_CLASS (meta_keymap_native_parent_class)->finalize (object); } static gboolean -clutter_keymap_evdev_get_num_lock_state (ClutterKeymap *keymap) +meta_keymap_native_get_num_lock_state (ClutterKeymap *keymap) { - ClutterDeviceManagerEvdev *device_manager; + MetaDeviceManagerNative *device_manager; struct xkb_state *xkb_state; device_manager = - CLUTTER_DEVICE_MANAGER_EVDEV (clutter_device_manager_get_default ()); - xkb_state = _clutter_device_manager_evdev_get_xkb_state (device_manager); + META_DEVICE_MANAGER_NATIVE (clutter_device_manager_get_default ()); + xkb_state = meta_device_manager_native_get_xkb_state (device_manager); return xkb_state_mod_name_is_active (xkb_state, XKB_MOD_NAME_NUM, @@ -67,14 +67,14 @@ clutter_keymap_evdev_get_num_lock_state (ClutterKeymap *keymap) } static gboolean -clutter_keymap_evdev_get_caps_lock_state (ClutterKeymap *keymap) +meta_keymap_native_get_caps_lock_state (ClutterKeymap *keymap) { - ClutterDeviceManagerEvdev *device_manager; + MetaDeviceManagerNative *device_manager; struct xkb_state *xkb_state; device_manager = - CLUTTER_DEVICE_MANAGER_EVDEV (clutter_device_manager_get_default ()); - xkb_state = _clutter_device_manager_evdev_get_xkb_state (device_manager); + META_DEVICE_MANAGER_NATIVE (clutter_device_manager_get_default ()); + xkb_state = meta_device_manager_native_get_xkb_state (device_manager); return xkb_state_mod_name_is_active (xkb_state, XKB_MOD_NAME_CAPS, @@ -83,19 +83,19 @@ clutter_keymap_evdev_get_caps_lock_state (ClutterKeymap *keymap) } static void -clutter_keymap_evdev_class_init (ClutterKeymapEvdevClass *klass) +meta_keymap_native_class_init (MetaKeymapNativeClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); ClutterKeymapClass *keymap_class = CLUTTER_KEYMAP_CLASS (klass); - object_class->finalize = clutter_keymap_evdev_finalize; + object_class->finalize = meta_keymap_native_finalize; - keymap_class->get_num_lock_state = clutter_keymap_evdev_get_num_lock_state; - keymap_class->get_caps_lock_state = clutter_keymap_evdev_get_caps_lock_state; + keymap_class->get_num_lock_state = meta_keymap_native_get_num_lock_state; + keymap_class->get_caps_lock_state = meta_keymap_native_get_caps_lock_state; } static void -clutter_keymap_evdev_init (ClutterKeymapEvdev *keymap) +meta_keymap_native_init (MetaKeymapNative *keymap) { struct xkb_context *ctx; struct xkb_rule_names names; @@ -113,8 +113,8 @@ clutter_keymap_evdev_init (ClutterKeymapEvdev *keymap) } void -clutter_keymap_evdev_set_keyboard_map (ClutterKeymapEvdev *keymap, - struct xkb_keymap *xkb_keymap) +meta_keymap_native_set_keyboard_map (MetaKeymapNative *keymap, + struct xkb_keymap *xkb_keymap) { if (keymap->keymap) xkb_keymap_unref (keymap->keymap); @@ -122,7 +122,7 @@ clutter_keymap_evdev_set_keyboard_map (ClutterKeymapEvdev *keymap, } struct xkb_keymap * -clutter_keymap_evdev_get_keyboard_map (ClutterKeymapEvdev *keymap) +meta_keymap_native_get_keyboard_map (MetaKeymapNative *keymap) { return keymap->keymap; } diff --git a/clutter/clutter/evdev/clutter-keymap-evdev.h b/src/backends/native/meta-keymap-native.h similarity index 62% rename from clutter/clutter/evdev/clutter-keymap-evdev.h rename to src/backends/native/meta-keymap-native.h index f3424b775..3f30f287a 100644 --- a/clutter/clutter/evdev/clutter-keymap-evdev.h +++ b/src/backends/native/meta-keymap-native.h @@ -19,14 +19,14 @@ * Author: Carlos Garnacho */ -#include "clutter-xkb-utils.h" -#include "clutter-keymap.h" +#include "backends/native/meta-xkb-utils.h" +#include "clutter/clutter.h" -#define CLUTTER_TYPE_KEYMAP_EVDEV (clutter_keymap_evdev_get_type ()) -G_DECLARE_FINAL_TYPE (ClutterKeymapEvdev, clutter_keymap_evdev, - CLUTTER, KEYMAP_EVDEV, +#define META_TYPE_KEYMAP_NATIVE (meta_keymap_native_get_type ()) +G_DECLARE_FINAL_TYPE (MetaKeymapNative, meta_keymap_native, + META, KEYMAP_NATIVE, ClutterKeymap) -void clutter_keymap_evdev_set_keyboard_map (ClutterKeymapEvdev *keymap, - struct xkb_keymap *xkb_keymap); -struct xkb_keymap * clutter_keymap_evdev_get_keyboard_map (ClutterKeymapEvdev *keymap); +void meta_keymap_native_set_keyboard_map (MetaKeymapNative *keymap, + struct xkb_keymap *xkb_keymap); +struct xkb_keymap * meta_keymap_native_get_keyboard_map (MetaKeymapNative *keymap); diff --git a/src/backends/native/meta-launcher.c b/src/backends/native/meta-launcher.c index cc59ad537..0ccd24af5 100644 --- a/src/backends/native/meta-launcher.c +++ b/src/backends/native/meta-launcher.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -37,9 +38,9 @@ #include "backends/native/dbus-utils.h" #include "backends/native/meta-backend-native.h" #include "backends/native/meta-cursor-renderer-native.h" +#include "backends/native/meta-device-manager-native.h" #include "backends/native/meta-renderer-native.h" #include "clutter/clutter.h" -#include "clutter/evdev/clutter-evdev.h" #include "meta-dbus-login1.h" @@ -524,11 +525,11 @@ meta_launcher_new (GError **error) self->sysfs_fds = g_hash_table_new (NULL, NULL); self->session_active = TRUE; - clutter_evdev_set_seat_id (self->seat_id); + meta_device_manager_native_set_seat_id (self->seat_id); - clutter_evdev_set_device_callbacks (on_evdev_device_open, - on_evdev_device_close, - self); + meta_device_manager_native_set_device_callbacks (on_evdev_device_open, + on_evdev_device_close, + self); g_signal_connect (self->session_proxy, "notify::active", G_CALLBACK (on_active_changed), self); diff --git a/clutter/clutter/evdev/clutter-seat-evdev.c b/src/backends/native/meta-seat-native.c similarity index 70% rename from clutter/clutter/evdev/clutter-seat-evdev.c rename to src/backends/native/meta-seat-native.c index 888db6e4f..fb4f0dc0b 100644 --- a/clutter/clutter/evdev/clutter-seat-evdev.c +++ b/src/backends/native/meta-seat-native.c @@ -24,18 +24,17 @@ * Author: Jonas Ådahl */ -#include "clutter-build-config.h" - -#include "clutter-seat-evdev.h" +#include "config.h" #include #include -#include "clutter-event-private.h" -#include "clutter-input-device-evdev.h" -#include "clutter-input-device-tool-evdev.h" -#include "clutter-keymap-evdev.h" -#include "clutter-main.h" +#include "backends/native/meta-seat-native.h" +#include "backends/native/meta-event-native.h" +#include "backends/native/meta-input-device-native.h" +#include "backends/native/meta-input-device-tool-native.h" +#include "backends/native/meta-keymap-native.h" +#include "clutter/clutter-mutter.h" /* Try to keep the pointer inside the stage. Hopefully no one is using * this backend with stages smaller than this. */ @@ -51,8 +50,8 @@ #endif void -clutter_seat_evdev_set_libinput_seat (ClutterSeatEvdev *seat, - struct libinput_seat *libinput_seat) +meta_seat_native_set_libinput_seat (MetaSeatNative *seat, + struct libinput_seat *libinput_seat) { g_assert (seat->libinput_seat == NULL); @@ -62,10 +61,10 @@ clutter_seat_evdev_set_libinput_seat (ClutterSeatEvdev *seat, } void -clutter_seat_evdev_sync_leds (ClutterSeatEvdev *seat) +meta_seat_native_sync_leds (MetaSeatNative *seat) { GSList *iter; - ClutterInputDeviceEvdev *device_evdev; + MetaInputDeviceNative *device_evdev; int caps_lock, num_lock, scroll_lock; enum libinput_led leds = 0; @@ -83,19 +82,19 @@ clutter_seat_evdev_sync_leds (ClutterSeatEvdev *seat) for (iter = seat->devices; iter; iter = iter->next) { device_evdev = iter->data; - _clutter_input_device_evdev_update_leds (device_evdev, leds); + meta_input_device_native_update_leds (device_evdev, leds); } } static void -clutter_touch_state_free (ClutterTouchState *touch_state) +clutter_touch_state_free (MetaTouchState *touch_state) { - g_slice_free (ClutterTouchState, touch_state); + g_slice_free (MetaTouchState, touch_state); } static void -ensure_seat_slot_allocated (ClutterSeatEvdev *seat, - int seat_slot) +ensure_seat_slot_allocated (MetaSeatNative *seat, + int seat_slot) { if (seat_slot >= seat->n_alloc_touch_states) { @@ -105,17 +104,17 @@ ensure_seat_slot_allocated (ClutterSeatEvdev *seat, seat->n_alloc_touch_states += size_increase; seat->touch_states = g_realloc_n (seat->touch_states, seat->n_alloc_touch_states, - sizeof (ClutterTouchState *)); + sizeof (MetaTouchState *)); for (i = 0; i < size_increase; i++) seat->touch_states[seat->n_alloc_touch_states - (i + 1)] = NULL; } } -ClutterTouchState * -clutter_seat_evdev_acquire_touch_state (ClutterSeatEvdev *seat, - int device_slot) +MetaTouchState * +meta_seat_native_acquire_touch_state (MetaSeatNative *seat, + int device_slot) { - ClutterTouchState *touch_state; + MetaTouchState *touch_state; int seat_slot; for (seat_slot = 0; seat_slot < seat->n_alloc_touch_states; seat_slot++) @@ -126,8 +125,8 @@ clutter_seat_evdev_acquire_touch_state (ClutterSeatEvdev *seat, ensure_seat_slot_allocated (seat, seat_slot); - touch_state = g_slice_new0 (ClutterTouchState); - *touch_state = (ClutterTouchState) { + touch_state = g_slice_new0 (MetaTouchState); + *touch_state = (MetaTouchState) { .seat = seat, .seat_slot = seat_slot, .device_slot = device_slot, @@ -139,32 +138,32 @@ clutter_seat_evdev_acquire_touch_state (ClutterSeatEvdev *seat, } void -clutter_seat_evdev_release_touch_state (ClutterSeatEvdev *seat, - ClutterTouchState *touch_state) +meta_seat_native_release_touch_state (MetaSeatNative *seat, + MetaTouchState *touch_state) { g_clear_pointer (&seat->touch_states[touch_state->seat_slot], clutter_touch_state_free); } -ClutterSeatEvdev * -clutter_seat_evdev_new (ClutterDeviceManagerEvdev *manager_evdev) +MetaSeatNative * +meta_seat_native_new (MetaDeviceManagerNative *manager_evdev) { ClutterDeviceManager *manager = CLUTTER_DEVICE_MANAGER (manager_evdev); - ClutterSeatEvdev *seat; + MetaSeatNative *seat; ClutterInputDevice *device; ClutterStage *stage; ClutterKeymap *keymap; struct xkb_keymap *xkb_keymap; - seat = g_new0 (ClutterSeatEvdev, 1); + seat = g_new0 (MetaSeatNative, 1); if (!seat) return NULL; seat->manager_evdev = manager_evdev; - device = _clutter_input_device_evdev_new_virtual ( + device = meta_input_device_native_new_virtual ( manager, seat, CLUTTER_POINTER_DEVICE, CLUTTER_INPUT_MODE_MASTER); - stage = _clutter_device_manager_evdev_get_stage (manager_evdev); + stage = meta_device_manager_native_get_stage (manager_evdev); _clutter_input_device_set_stage (device, stage); seat->pointer_x = INITIAL_POINTER_X; seat->pointer_y = INITIAL_POINTER_Y; @@ -174,7 +173,7 @@ clutter_seat_evdev_new (ClutterDeviceManagerEvdev *manager_evdev) _clutter_device_manager_add_device (manager, device); seat->core_pointer = device; - device = _clutter_input_device_evdev_new_virtual ( + device = meta_input_device_native_new_virtual ( manager, seat, CLUTTER_KEYBOARD_DEVICE, CLUTTER_INPUT_MODE_MASTER); _clutter_input_device_set_stage (device, stage); @@ -186,7 +185,7 @@ clutter_seat_evdev_new (ClutterDeviceManagerEvdev *manager_evdev) seat->repeat_interval = 33; /* ms */ keymap = clutter_backend_get_keymap (clutter_get_default_backend ()); - xkb_keymap = clutter_keymap_evdev_get_keyboard_map (CLUTTER_KEYMAP_EVDEV (keymap)); + xkb_keymap = meta_keymap_native_get_keyboard_map (META_KEYMAP_NATIVE (keymap)); if (xkb_keymap) { @@ -204,7 +203,7 @@ clutter_seat_evdev_new (ClutterDeviceManagerEvdev *manager_evdev) } void -clutter_seat_evdev_clear_repeat_timer (ClutterSeatEvdev *seat) +meta_seat_native_clear_repeat_timer (MetaSeatNative *seat) { if (seat->repeat_timer) { @@ -217,24 +216,24 @@ clutter_seat_evdev_clear_repeat_timer (ClutterSeatEvdev *seat) static gboolean keyboard_repeat (gpointer data) { - ClutterSeatEvdev *seat = data; + MetaSeatNative *seat = data; GSource *source; /* There might be events queued in libinput that could cancel the repeat timer. */ - _clutter_device_manager_evdev_dispatch (seat->manager_evdev); + meta_device_manager_native_dispatch (seat->manager_evdev); if (!seat->repeat_timer) return G_SOURCE_REMOVE; g_return_val_if_fail (seat->repeat_device != NULL, G_SOURCE_REMOVE); source = g_main_context_find_source_by_id (NULL, seat->repeat_timer); - clutter_seat_evdev_notify_key (seat, - seat->repeat_device, - g_source_get_time (source), - seat->repeat_key, - AUTOREPEAT_VALUE, - FALSE); + meta_seat_native_notify_key (seat, + seat->repeat_device, + g_source_get_time (source), + seat->repeat_key, + AUTOREPEAT_VALUE, + FALSE); return G_SOURCE_CONTINUE; } @@ -246,9 +245,9 @@ queue_event (ClutterEvent *event) } static int -update_button_count (ClutterSeatEvdev *seat, - uint32_t button, - uint32_t state) +update_button_count (MetaSeatNative *seat, + uint32_t button, + uint32_t state) { if (state) { @@ -265,12 +264,12 @@ update_button_count (ClutterSeatEvdev *seat, } void -clutter_seat_evdev_notify_key (ClutterSeatEvdev *seat, - ClutterInputDevice *device, - uint64_t time_us, - uint32_t key, - uint32_t state, - gboolean update_keys) +meta_seat_native_notify_key (MetaSeatNative *seat, + ClutterInputDevice *device, + uint64_t time_us, + uint32_t key, + uint32_t state, + gboolean update_keys) { ClutterStage *stage; ClutterEvent *event = NULL; @@ -291,17 +290,17 @@ clutter_seat_evdev_notify_key (ClutterSeatEvdev *seat, stage = _clutter_input_device_get_stage (device); if (stage == NULL) { - clutter_seat_evdev_clear_repeat_timer (seat); + meta_seat_native_clear_repeat_timer (seat); return; } - event = _clutter_key_event_new_from_evdev (device, - seat->core_keyboard, - stage, - seat->xkb, - seat->button_state, - us2ms (time_us), key, state); - _clutter_evdev_event_set_event_code (event, key); + event = meta_key_event_new_from_evdev (device, + seat->core_keyboard, + stage, + seat->xkb, + seat->button_state, + us2ms (time_us), key, state); + meta_event_native_set_event_code (event, key); /* We must be careful and not pass multiple releases to xkb, otherwise it gets confused and locks the modifiers */ @@ -325,8 +324,8 @@ clutter_seat_evdev_notify_key (ClutterSeatEvdev *seat, backend = clutter_get_default_backend (); g_signal_emit_by_name (clutter_backend_get_keymap (backend), "state-changed"); - clutter_seat_evdev_sync_leds (seat); - clutter_evdev_a11y_maybe_notify_toggle_keys (CLUTTER_INPUT_DEVICE_EVDEV (seat->core_keyboard)); + meta_seat_native_sync_leds (seat); + meta_input_device_native_a11y_maybe_notify_toggle_keys (META_INPUT_DEVICE_NATIVE (seat->core_keyboard)); } if (state == 0 || /* key release */ @@ -334,7 +333,7 @@ clutter_seat_evdev_notify_key (ClutterSeatEvdev *seat, !xkb_keymap_key_repeats (xkb_state_get_keymap (seat->xkb), event->key.hardware_keycode)) { - clutter_seat_evdev_clear_repeat_timer (seat); + meta_seat_native_clear_repeat_timer (seat); return; } @@ -351,7 +350,7 @@ clutter_seat_evdev_notify_key (ClutterSeatEvdev *seat, { guint32 interval; - clutter_seat_evdev_clear_repeat_timer (seat); + meta_seat_native_clear_repeat_timer (seat); seat->repeat_device = g_object_ref (device); if (seat->repeat_count == 1) @@ -373,7 +372,7 @@ clutter_seat_evdev_notify_key (ClutterSeatEvdev *seat, } static ClutterEvent * -new_absolute_motion_event (ClutterSeatEvdev *seat, +new_absolute_motion_event (MetaSeatNative *seat, ClutterInputDevice *input_device, guint64 time_us, gfloat x, @@ -386,17 +385,19 @@ new_absolute_motion_event (ClutterSeatEvdev *seat, event = clutter_event_new (CLUTTER_MOTION); if (clutter_input_device_get_device_type (input_device) != CLUTTER_TABLET_DEVICE) - _clutter_device_manager_evdev_constrain_pointer (seat->manager_evdev, - seat->core_pointer, - time_us, - seat->pointer_x, - seat->pointer_y, - &x, &y); + { + meta_device_manager_native_constrain_pointer (seat->manager_evdev, + seat->core_pointer, + time_us, + seat->pointer_x, + seat->pointer_y, + &x, &y); + } - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->motion.time = us2ms (time_us); event->motion.stage = stage; - _clutter_xkb_translate_state (event, seat->xkb, seat->button_state); + meta_xkb_translate_state (event, seat->xkb, seat->button_state); event->motion.x = x; event->motion.y = y; event->motion.axes = axes; @@ -405,8 +406,8 @@ new_absolute_motion_event (ClutterSeatEvdev *seat, if (clutter_input_device_get_device_type (input_device) == CLUTTER_TABLET_DEVICE) { - ClutterInputDeviceEvdev *device_evdev = - CLUTTER_INPUT_DEVICE_EVDEV (input_device); + MetaInputDeviceNative *device_evdev = + META_INPUT_DEVICE_NATIVE (input_device); clutter_event_set_device_tool (event, device_evdev->last_tool); clutter_event_set_device (event, input_device); @@ -428,13 +429,13 @@ new_absolute_motion_event (ClutterSeatEvdev *seat, } void -clutter_seat_evdev_notify_relative_motion (ClutterSeatEvdev *seat, - ClutterInputDevice *input_device, - uint64_t time_us, - float dx, - float dy, - float dx_unaccel, - float dy_unaccel) +meta_seat_native_notify_relative_motion (MetaSeatNative *seat, + ClutterInputDevice *input_device, + uint64_t time_us, + float dx, + float dy, + float dx_unaccel, + float dy_unaccel) { gfloat new_x, new_y; ClutterEvent *event; @@ -444,31 +445,32 @@ clutter_seat_evdev_notify_relative_motion (ClutterSeatEvdev *seat, if (!_clutter_input_device_get_stage (input_device)) return; - _clutter_device_manager_evdev_filter_relative_motion (seat->manager_evdev, - input_device, - seat->pointer_x, - seat->pointer_y, - &dx, - &dy); + meta_device_manager_native_filter_relative_motion (seat->manager_evdev, + input_device, + seat->pointer_x, + seat->pointer_y, + &dx, + &dy); new_x = seat->pointer_x + dx; new_y = seat->pointer_y + dy; event = new_absolute_motion_event (seat, input_device, time_us, new_x, new_y, NULL); - _clutter_evdev_event_set_relative_motion (event, - dx, dy, - dx_unaccel, dy_unaccel); + meta_event_native_set_relative_motion (event, + dx, dy, + dx_unaccel, dy_unaccel); queue_event (event); } -void clutter_seat_evdev_notify_absolute_motion (ClutterSeatEvdev *seat, - ClutterInputDevice *input_device, - uint64_t time_us, - float x, - float y, - double *axes) +void +meta_seat_native_notify_absolute_motion (MetaSeatNative *seat, + ClutterInputDevice *input_device, + uint64_t time_us, + float x, + float y, + double *axes) { ClutterEvent *event; @@ -478,13 +480,13 @@ void clutter_seat_evdev_notify_absolute_motion (ClutterSeatEvdev *seat, } void -clutter_seat_evdev_notify_button (ClutterSeatEvdev *seat, - ClutterInputDevice *input_device, - uint64_t time_us, - uint32_t button, - uint32_t state) +meta_seat_native_notify_button (MetaSeatNative *seat, + ClutterInputDevice *input_device, + uint64_t time_us, + uint32_t button, + uint32_t state) { - ClutterInputDeviceEvdev *device_evdev = (ClutterInputDeviceEvdev *) input_device; + MetaInputDeviceNative *device_evdev = (MetaInputDeviceNative *) input_device; ClutterStage *stage; ClutterEvent *event = NULL; gint button_nr; @@ -561,10 +563,10 @@ clutter_seat_evdev_notify_button (ClutterSeatEvdev *seat, seat->button_state &= ~maskmap[button_nr - 1]; } - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->button.time = us2ms (time_us); event->button.stage = CLUTTER_STAGE (stage); - _clutter_xkb_translate_state (event, seat->xkb, seat->button_state); + meta_xkb_translate_state (event, seat->xkb, seat->button_state); event->button.button = button_nr; if (clutter_input_device_get_device_type (input_device) == CLUTTER_TABLET_DEVICE) @@ -589,13 +591,13 @@ clutter_seat_evdev_notify_button (ClutterSeatEvdev *seat, /* Apply the button event code as per the tool mapping */ guint mapped_button; - mapped_button = clutter_input_device_tool_evdev_get_button_code (device_evdev->last_tool, - button_nr); + mapped_button = meta_input_device_tool_native_get_button_code (device_evdev->last_tool, + button_nr); if (mapped_button != 0) button = mapped_button; } - _clutter_evdev_event_set_event_code (event, button); + meta_event_native_set_event_code (event, button); if (clutter_input_device_get_device_type (input_device) == CLUTTER_TABLET_DEVICE) { @@ -621,8 +623,8 @@ notify_scroll (ClutterInputDevice *input_device, ClutterScrollFinishFlags flags, gboolean emulated) { - ClutterInputDeviceEvdev *device_evdev; - ClutterSeatEvdev *seat; + MetaInputDeviceNative *device_evdev; + MetaSeatNative *seat; ClutterStage *stage; ClutterEvent *event = NULL; gdouble scroll_factor; @@ -633,15 +635,15 @@ notify_scroll (ClutterInputDevice *input_device, if (stage == NULL) return; - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (input_device); + seat = meta_input_device_native_get_seat (device_evdev); event = clutter_event_new (CLUTTER_SCROLL); - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->scroll.time = us2ms (time_us); event->scroll.stage = CLUTTER_STAGE (stage); - _clutter_xkb_translate_state (event, seat->xkb, seat->button_state); + meta_xkb_translate_state (event, seat->xkb, seat->button_state); /* libinput pointer axis events are in pointer motion coordinate space. * To convert to Xi2 discrete step coordinate space, multiply the factor @@ -671,8 +673,8 @@ notify_discrete_scroll (ClutterInputDevice *input_device, ClutterScrollSource scroll_source, gboolean emulated) { - ClutterInputDeviceEvdev *device_evdev; - ClutterSeatEvdev *seat; + MetaInputDeviceNative *device_evdev; + MetaSeatNative *seat; ClutterStage *stage; ClutterEvent *event = NULL; @@ -685,15 +687,15 @@ notify_discrete_scroll (ClutterInputDevice *input_device, if (stage == NULL) return; - device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); - seat = _clutter_input_device_evdev_get_seat (device_evdev); + device_evdev = META_INPUT_DEVICE_NATIVE (input_device); + seat = meta_input_device_native_get_seat (device_evdev); event = clutter_event_new (CLUTTER_SCROLL); - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->scroll.time = us2ms (time_us); event->scroll.stage = CLUTTER_STAGE (stage); - _clutter_xkb_translate_state (event, seat->xkb, seat->button_state); + meta_xkb_translate_state (event, seat->xkb, seat->button_state); event->scroll.direction = direction; @@ -709,7 +711,7 @@ notify_discrete_scroll (ClutterInputDevice *input_device, } static void -check_notify_discrete_scroll (ClutterSeatEvdev *seat, +check_notify_discrete_scroll (MetaSeatNative *seat, ClutterInputDevice *device, uint64_t time_us, ClutterScrollSource scroll_source) @@ -740,13 +742,13 @@ check_notify_discrete_scroll (ClutterSeatEvdev *seat, } void -clutter_seat_evdev_notify_scroll_continuous (ClutterSeatEvdev *seat, - ClutterInputDevice *input_device, - uint64_t time_us, - double dx, - double dy, - ClutterScrollSource scroll_source, - ClutterScrollFinishFlags finish_flags) +meta_seat_native_notify_scroll_continuous (MetaSeatNative *seat, + ClutterInputDevice *input_device, + uint64_t time_us, + double dx, + double dy, + ClutterScrollSource scroll_source, + ClutterScrollFinishFlags finish_flags) { if (finish_flags & CLUTTER_SCROLL_FINISHED_HORIZONTAL) seat->accum_scroll_dx = 0; @@ -781,12 +783,12 @@ discrete_to_direction (double discrete_dx, } void -clutter_seat_evdev_notify_discrete_scroll (ClutterSeatEvdev *seat, - ClutterInputDevice *input_device, - uint64_t time_us, - double discrete_dx, - double discrete_dy, - ClutterScrollSource scroll_source) +meta_seat_native_notify_discrete_scroll (MetaSeatNative *seat, + ClutterInputDevice *input_device, + uint64_t time_us, + double discrete_dx, + double discrete_dy, + ClutterScrollSource scroll_source) { notify_scroll (input_device, time_us, discrete_dx * DISCRETE_SCROLL_STEP, @@ -800,13 +802,13 @@ clutter_seat_evdev_notify_discrete_scroll (ClutterSeatEvdev *seat, } void -clutter_seat_evdev_notify_touch_event (ClutterSeatEvdev *seat, - ClutterInputDevice *input_device, - ClutterEventType evtype, - uint64_t time_us, - int slot, - double x, - double y) +meta_seat_native_notify_touch_event (MetaSeatNative *seat, + ClutterInputDevice *input_device, + ClutterEventType evtype, + uint64_t time_us, + int slot, + double x, + double y) { ClutterStage *stage; ClutterEvent *event = NULL; @@ -819,18 +821,18 @@ clutter_seat_evdev_notify_touch_event (ClutterSeatEvdev *seat, event = clutter_event_new (evtype); - _clutter_evdev_event_set_time_usec (event, time_us); + meta_event_native_set_time_usec (event, time_us); event->touch.time = us2ms (time_us); event->touch.stage = CLUTTER_STAGE (stage); event->touch.x = x; event->touch.y = y; - clutter_input_device_evdev_translate_coordinates (input_device, stage, - &event->touch.x, - &event->touch.y); + meta_input_device_native_translate_coordinates (input_device, stage, + &event->touch.x, + &event->touch.y); /* "NULL" sequences are special cased in clutter */ event->touch.sequence = GINT_TO_POINTER (MAX (1, slot + 1)); - _clutter_xkb_translate_state (event, seat->xkb, seat->button_state); + meta_xkb_translate_state (event, seat->xkb, seat->button_state); if (evtype == CLUTTER_TOUCH_BEGIN || evtype == CLUTTER_TOUCH_UPDATE) @@ -843,7 +845,7 @@ clutter_seat_evdev_notify_touch_event (ClutterSeatEvdev *seat, } void -clutter_seat_evdev_free (ClutterSeatEvdev *seat) +meta_seat_native_free (MetaSeatNative *seat) { GSList *iter; @@ -858,7 +860,7 @@ clutter_seat_evdev_free (ClutterSeatEvdev *seat) xkb_state_unref (seat->xkb); - clutter_seat_evdev_clear_repeat_timer (seat); + meta_seat_native_clear_repeat_timer (seat); if (seat->libinput_seat) libinput_seat_unref (seat->libinput_seat); @@ -867,8 +869,8 @@ clutter_seat_evdev_free (ClutterSeatEvdev *seat) } ClutterInputDevice * -clutter_seat_evdev_get_device (ClutterSeatEvdev *seat, - gint id) +meta_seat_native_get_device (MetaSeatNative *seat, + gint id) { ClutterInputDevice *device; GSList *l; @@ -885,8 +887,8 @@ clutter_seat_evdev_get_device (ClutterSeatEvdev *seat, } void -clutter_seat_evdev_set_stage (ClutterSeatEvdev *seat, - ClutterStage *stage) +meta_seat_native_set_stage (MetaSeatNative *seat, + ClutterStage *stage) { GSList *l; diff --git a/src/backends/native/meta-seat-native.h b/src/backends/native/meta-seat-native.h new file mode 100644 index 000000000..81be9189d --- /dev/null +++ b/src/backends/native/meta-seat-native.h @@ -0,0 +1,160 @@ +/* + * Copyright (C) 2010 Intel Corp. + * Copyright (C) 2014 Jonas Ådahl + * Copyright (C) 2016 Red Hat Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + * Author: Damien Lespiau + * Author: Jonas Ådahl + */ + +#ifndef META_SEAT_NATIVE_H +#define META_SEAT_NATIVE_H + +#include +#include + +#include "backends/native/meta-device-manager-native.h" +#include "backends/native/meta-xkb-utils.h" +#include "clutter/clutter.h" + +typedef struct _MetaTouchState MetaTouchState; +typedef struct _MetaSeatNative MetaSeatNative; + +struct _MetaTouchState +{ + MetaSeatNative *seat; + + int device_slot; + int seat_slot; + ClutterPoint coords; +}; + +struct _MetaSeatNative +{ + struct libinput_seat *libinput_seat; + MetaDeviceManagerNative *manager_evdev; + + GSList *devices; + + ClutterInputDevice *core_pointer; + ClutterInputDevice *core_keyboard; + + MetaTouchState **touch_states; + int n_alloc_touch_states; + + struct xkb_state *xkb; + xkb_led_index_t caps_lock_led; + xkb_led_index_t num_lock_led; + xkb_led_index_t scroll_lock_led; + xkb_layout_index_t layout_idx; + uint32_t button_state; + int button_count[KEY_CNT]; + + /* keyboard repeat */ + gboolean repeat; + guint32 repeat_delay; + guint32 repeat_interval; + guint32 repeat_key; + guint32 repeat_count; + guint32 repeat_timer; + ClutterInputDevice *repeat_device; + + gfloat pointer_x; + gfloat pointer_y; + + /* Emulation of discrete scroll events out of smooth ones */ + gfloat accum_scroll_dx; + gfloat accum_scroll_dy; +}; + +void meta_seat_native_notify_key (MetaSeatNative *seat, + ClutterInputDevice *device, + uint64_t time_us, + uint32_t key, + uint32_t state, + gboolean update_keys); + +void meta_seat_native_notify_relative_motion (MetaSeatNative *seat_evdev, + ClutterInputDevice *input_device, + uint64_t time_us, + float dx, + float dy, + float dx_unaccel, + float dy_unaccel); + +void meta_seat_native_notify_absolute_motion (MetaSeatNative *seat_evdev, + ClutterInputDevice *input_device, + uint64_t time_us, + float x, + float y, + double *axes); + +void meta_seat_native_notify_button (MetaSeatNative *seat, + ClutterInputDevice *input_device, + uint64_t time_us, + uint32_t button, + uint32_t state); + +void meta_seat_native_notify_scroll_continuous (MetaSeatNative *seat, + ClutterInputDevice *input_device, + uint64_t time_us, + double dx, + double dy, + ClutterScrollSource source, + ClutterScrollFinishFlags flags); + +void meta_seat_native_notify_discrete_scroll (MetaSeatNative *seat, + ClutterInputDevice *input_device, + uint64_t time_us, + double discrete_dx, + double discrete_dy, + ClutterScrollSource source); + +void meta_seat_native_notify_touch_event (MetaSeatNative *seat, + ClutterInputDevice *input_device, + ClutterEventType evtype, + uint64_t time_us, + int slot, + double x, + double y); + +void meta_seat_native_set_libinput_seat (MetaSeatNative *seat, + struct libinput_seat *libinput_seat); + +void meta_seat_native_sync_leds (MetaSeatNative *seat); + +ClutterInputDevice * meta_seat_native_get_device (MetaSeatNative *seat, + gint id); + +MetaTouchState * meta_seat_native_acquire_touch_state (MetaSeatNative *seat, + int device_slot); + +void meta_seat_native_release_touch_state (MetaSeatNative *seat, + MetaTouchState *touch_state); + +MetaTouchState * meta_seat_native_get_touch (MetaSeatNative *seat, + guint32 id); + +void meta_seat_native_set_stage (MetaSeatNative *seat, + ClutterStage *stage); + +void meta_seat_native_clear_repeat_timer (MetaSeatNative *seat); + +MetaSeatNative * meta_seat_native_new (MetaDeviceManagerNative *manager_evdev); + +void meta_seat_native_free (MetaSeatNative *seat); + +#endif /* META_SEAT_NATIVE_H */ diff --git a/clutter/clutter/evdev/clutter-virtual-input-device-evdev.c b/src/backends/native/meta-virtual-input-device-native.c similarity index 51% rename from clutter/clutter/evdev/clutter-virtual-input-device-evdev.c rename to src/backends/native/meta-virtual-input-device-native.c index c365810ed..9ecc657c6 100644 --- a/clutter/clutter/evdev/clutter-virtual-input-device-evdev.c +++ b/src/backends/native/meta-virtual-input-device-native.c @@ -1,8 +1,4 @@ /* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * * Copyright (C) 2016 Red Hat Inc. * * This library is free software; you can redistribute it and/or @@ -21,17 +17,16 @@ * Author: Jonas Ådahl */ -#include "clutter-build-config.h" +#include "config.h" #include #include -#include "clutter-private.h" -#include "clutter-virtual-input-device.h" -#include "evdev/clutter-input-device-evdev.h" -#include "evdev/clutter-keymap-evdev.h" -#include "evdev/clutter-seat-evdev.h" -#include "evdev/clutter-virtual-input-device-evdev.h" +#include "backends/native/meta-input-device-native.h" +#include "backends/native/meta-keymap-native.h" +#include "backends/native/meta-seat-native.h" +#include "backends/native/meta-virtual-input-device-native.h" +#include "clutter/clutter-mutter.h" enum { @@ -44,17 +39,17 @@ enum static GParamSpec *obj_props[PROP_LAST]; -struct _ClutterVirtualInputDeviceEvdev +struct _MetaVirtualInputDeviceNative { ClutterVirtualInputDevice parent; ClutterInputDevice *device; - ClutterSeatEvdev *seat; + MetaSeatNative *seat; int button_count[KEY_CNT]; }; -G_DEFINE_TYPE (ClutterVirtualInputDeviceEvdev, - clutter_virtual_input_device_evdev, +G_DEFINE_TYPE (MetaVirtualInputDeviceNative, + meta_virtual_input_device_native, CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE) typedef enum _EvdevButtonType @@ -65,9 +60,9 @@ typedef enum _EvdevButtonType } EvdevButtonType; static int -update_button_count (ClutterVirtualInputDeviceEvdev *virtual_evdev, - uint32_t button, - uint32_t state) +update_button_count (MetaVirtualInputDeviceNative *virtual_evdev, + uint32_t button, + uint32_t state) { if (state) return ++virtual_evdev->button_count[button]; @@ -114,8 +109,8 @@ get_button_type (uint16_t code) static void release_pressed_buttons (ClutterVirtualInputDevice *virtual_device) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); int code; uint64_t time_us; @@ -147,41 +142,41 @@ release_pressed_buttons (ClutterVirtualInputDevice *virtual_device) } static void -clutter_virtual_input_device_evdev_notify_relative_motion (ClutterVirtualInputDevice *virtual_device, - uint64_t time_us, - double dx, - double dy) +meta_virtual_input_device_native_notify_relative_motion (ClutterVirtualInputDevice *virtual_device, + uint64_t time_us, + double dx, + double dy) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); if (time_us == CLUTTER_CURRENT_TIME) time_us = g_get_monotonic_time (); - clutter_seat_evdev_notify_relative_motion (virtual_evdev->seat, - virtual_evdev->device, - time_us, - dx, dy, - dx, dy); + meta_seat_native_notify_relative_motion (virtual_evdev->seat, + virtual_evdev->device, + time_us, + dx, dy, + dx, dy); } static void -clutter_virtual_input_device_evdev_notify_absolute_motion (ClutterVirtualInputDevice *virtual_device, - uint64_t time_us, - double x, - double y) +meta_virtual_input_device_native_notify_absolute_motion (ClutterVirtualInputDevice *virtual_device, + uint64_t time_us, + double x, + double y) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); if (time_us == CLUTTER_CURRENT_TIME) time_us = g_get_monotonic_time (); - clutter_seat_evdev_notify_absolute_motion (virtual_evdev->seat, - virtual_evdev->device, - time_us, - x, y, - NULL); + meta_seat_native_notify_absolute_motion (virtual_evdev->seat, + virtual_evdev->device, + time_us, + x, y, + NULL); } static int @@ -205,13 +200,13 @@ translate_to_evdev_button (int clutter_button) } static void -clutter_virtual_input_device_evdev_notify_button (ClutterVirtualInputDevice *virtual_device, - uint64_t time_us, - uint32_t button, - ClutterButtonState button_state) +meta_virtual_input_device_native_notify_button (ClutterVirtualInputDevice *virtual_device, + uint64_t time_us, + uint32_t button, + ClutterButtonState button_state) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); int button_count; int evdev_button; @@ -236,21 +231,21 @@ clutter_virtual_input_device_evdev_notify_button (ClutterVirtualInputDevice *vir return; } - clutter_seat_evdev_notify_button (virtual_evdev->seat, - virtual_evdev->device, - time_us, - evdev_button, - button_state); + meta_seat_native_notify_button (virtual_evdev->seat, + virtual_evdev->device, + time_us, + evdev_button, + button_state); } static void -clutter_virtual_input_device_evdev_notify_key (ClutterVirtualInputDevice *virtual_device, - uint64_t time_us, - uint32_t key, - ClutterKeyState key_state) +meta_virtual_input_device_native_notify_key (ClutterVirtualInputDevice *virtual_device, + uint64_t time_us, + uint32_t key, + ClutterKeyState key_state) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); int key_count; if (time_us == CLUTTER_CURRENT_TIME) @@ -271,12 +266,12 @@ clutter_virtual_input_device_evdev_notify_key (ClutterVirtualInputDevice *virtua return; } - clutter_seat_evdev_notify_key (virtual_evdev->seat, - virtual_evdev->device, - time_us, - key, - key_state, - TRUE); + meta_seat_native_notify_key (virtual_evdev->seat, + virtual_evdev->device, + time_us, + key, + key_state, + TRUE); } static gboolean @@ -285,8 +280,8 @@ pick_keycode_for_keyval_in_current_group (ClutterVirtualInputDevice *virtual_dev guint *keycode_out, guint *level_out) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); ClutterKeymap *keymap; struct xkb_keymap *xkb_keymap; struct xkb_state *state; @@ -294,7 +289,7 @@ pick_keycode_for_keyval_in_current_group (ClutterVirtualInputDevice *virtual_dev xkb_keycode_t min_keycode, max_keycode; keymap = clutter_backend_get_keymap (clutter_get_default_backend ()); - xkb_keymap = clutter_keymap_evdev_get_keyboard_map (CLUTTER_KEYMAP_EVDEV (keymap)); + xkb_keymap = meta_keymap_native_get_keyboard_map (META_KEYMAP_NATIVE (keymap)); state = virtual_evdev->seat->xkb; layout = xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_EFFECTIVE); @@ -331,8 +326,8 @@ apply_level_modifiers (ClutterVirtualInputDevice *virtual_device, uint32_t level, uint32_t key_state) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); guint keysym, keycode, evcode; if (level == 0) @@ -358,22 +353,22 @@ apply_level_modifiers (ClutterVirtualInputDevice *virtual_device, clutter_input_device_keycode_to_evdev (virtual_evdev->device, keycode, &evcode); - clutter_seat_evdev_notify_key (virtual_evdev->seat, - virtual_evdev->device, - time_us, - evcode, - key_state, - TRUE); + meta_seat_native_notify_key (virtual_evdev->seat, + virtual_evdev->device, + time_us, + evcode, + key_state, + TRUE); } static void -clutter_virtual_input_device_evdev_notify_keyval (ClutterVirtualInputDevice *virtual_device, - uint64_t time_us, - uint32_t keyval, - ClutterKeyState key_state) +meta_virtual_input_device_native_notify_keyval (ClutterVirtualInputDevice *virtual_device, + uint64_t time_us, + uint32_t keyval, + ClutterKeyState key_state) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); int key_count; guint keycode = 0, level = 0, evcode = 0; @@ -408,12 +403,12 @@ clutter_virtual_input_device_evdev_notify_keyval (ClutterVirtualInputDevice *vir if (key_state) apply_level_modifiers (virtual_device, time_us, level, key_state); - clutter_seat_evdev_notify_key (virtual_evdev->seat, - virtual_evdev->device, - time_us, - evcode, - key_state, - TRUE); + meta_seat_native_notify_key (virtual_evdev->seat, + virtual_evdev->device, + time_us, + evcode, + key_state, + TRUE); if (!key_state) apply_level_modifiers (virtual_device, time_us, level, key_state); @@ -449,13 +444,13 @@ direction_to_discrete (ClutterScrollDirection direction, } static void -clutter_virtual_input_device_evdev_notify_discrete_scroll (ClutterVirtualInputDevice *virtual_device, - uint64_t time_us, - ClutterScrollDirection direction, - ClutterScrollSource scroll_source) +meta_virtual_input_device_native_notify_discrete_scroll (ClutterVirtualInputDevice *virtual_device, + uint64_t time_us, + ClutterScrollDirection direction, + ClutterScrollSource scroll_source) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); double discrete_dx = 0.0, discrete_dy = 0.0; if (time_us == CLUTTER_CURRENT_TIME) @@ -463,139 +458,139 @@ clutter_virtual_input_device_evdev_notify_discrete_scroll (ClutterVirtualInputDe direction_to_discrete (direction, &discrete_dx, &discrete_dy); - clutter_seat_evdev_notify_discrete_scroll (virtual_evdev->seat, - virtual_evdev->device, - time_us, - discrete_dx, discrete_dy, - scroll_source); + meta_seat_native_notify_discrete_scroll (virtual_evdev->seat, + virtual_evdev->device, + time_us, + discrete_dx, discrete_dy, + scroll_source); } static void -clutter_virtual_input_device_evdev_notify_scroll_continuous (ClutterVirtualInputDevice *virtual_device, - uint64_t time_us, - double dx, - double dy, - ClutterScrollSource scroll_source, - ClutterScrollFinishFlags finish_flags) +meta_virtual_input_device_native_notify_scroll_continuous (ClutterVirtualInputDevice *virtual_device, + uint64_t time_us, + double dx, + double dy, + ClutterScrollSource scroll_source, + ClutterScrollFinishFlags finish_flags) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); if (time_us == CLUTTER_CURRENT_TIME) time_us = g_get_monotonic_time (); - clutter_seat_evdev_notify_scroll_continuous (virtual_evdev->seat, - virtual_evdev->device, - time_us, - dx, dy, - scroll_source, - CLUTTER_SCROLL_FINISHED_NONE); + meta_seat_native_notify_scroll_continuous (virtual_evdev->seat, + virtual_evdev->device, + time_us, + dx, dy, + scroll_source, + CLUTTER_SCROLL_FINISHED_NONE); } static void -clutter_virtual_input_device_evdev_notify_touch_down (ClutterVirtualInputDevice *virtual_device, +meta_virtual_input_device_native_notify_touch_down (ClutterVirtualInputDevice *virtual_device, + uint64_t time_us, + int device_slot, + double x, + double y) +{ + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaInputDeviceNative *device_evdev = + META_INPUT_DEVICE_NATIVE (virtual_evdev->device); + MetaTouchState *touch_state; + + if (time_us == CLUTTER_CURRENT_TIME) + time_us = g_get_monotonic_time (); + + touch_state = meta_input_device_native_acquire_touch_state (device_evdev, + device_slot); + if (!touch_state) + return; + + touch_state->coords.x = x; + touch_state->coords.y = y; + + meta_seat_native_notify_touch_event (virtual_evdev->seat, + virtual_evdev->device, + CLUTTER_TOUCH_BEGIN, + time_us, + touch_state->seat_slot, + touch_state->coords.x, + touch_state->coords.y); +} + +static void +meta_virtual_input_device_native_notify_touch_motion (ClutterVirtualInputDevice *virtual_device, uint64_t time_us, int device_slot, double x, double y) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); - ClutterInputDeviceEvdev *device_evdev = - CLUTTER_INPUT_DEVICE_EVDEV (virtual_evdev->device); - ClutterTouchState *touch_state; + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaInputDeviceNative *device_evdev = + META_INPUT_DEVICE_NATIVE (virtual_evdev->device); + MetaTouchState *touch_state; if (time_us == CLUTTER_CURRENT_TIME) time_us = g_get_monotonic_time (); - touch_state = clutter_input_device_evdev_acquire_touch_state (device_evdev, - device_slot); + touch_state = meta_input_device_native_lookup_touch_state (device_evdev, + device_slot); if (!touch_state) return; touch_state->coords.x = x; touch_state->coords.y = y; - clutter_seat_evdev_notify_touch_event (virtual_evdev->seat, - virtual_evdev->device, - CLUTTER_TOUCH_BEGIN, - time_us, - touch_state->seat_slot, - touch_state->coords.x, - touch_state->coords.y); + meta_seat_native_notify_touch_event (virtual_evdev->seat, + virtual_evdev->device, + CLUTTER_TOUCH_BEGIN, + time_us, + touch_state->seat_slot, + touch_state->coords.x, + touch_state->coords.y); } static void -clutter_virtual_input_device_evdev_notify_touch_motion (ClutterVirtualInputDevice *virtual_device, - uint64_t time_us, - int device_slot, - double x, - double y) +meta_virtual_input_device_native_notify_touch_up (ClutterVirtualInputDevice *virtual_device, + uint64_t time_us, + int device_slot) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); - ClutterInputDeviceEvdev *device_evdev = - CLUTTER_INPUT_DEVICE_EVDEV (virtual_evdev->device); - ClutterTouchState *touch_state; + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaInputDeviceNative *device_evdev = + META_INPUT_DEVICE_NATIVE (virtual_evdev->device); + MetaTouchState *touch_state; if (time_us == CLUTTER_CURRENT_TIME) time_us = g_get_monotonic_time (); - touch_state = clutter_input_device_evdev_lookup_touch_state (device_evdev, - device_slot); + touch_state = meta_input_device_native_lookup_touch_state (device_evdev, + device_slot); if (!touch_state) return; - touch_state->coords.x = x; - touch_state->coords.y = y; + meta_seat_native_notify_touch_event (virtual_evdev->seat, + virtual_evdev->device, + CLUTTER_TOUCH_BEGIN, + time_us, + touch_state->seat_slot, + touch_state->coords.x, + touch_state->coords.y); - clutter_seat_evdev_notify_touch_event (virtual_evdev->seat, - virtual_evdev->device, - CLUTTER_TOUCH_BEGIN, - time_us, - touch_state->seat_slot, - touch_state->coords.x, - touch_state->coords.y); + meta_input_device_native_release_touch_state (device_evdev, touch_state); } static void -clutter_virtual_input_device_evdev_notify_touch_up (ClutterVirtualInputDevice *virtual_device, - uint64_t time_us, - int device_slot) +meta_virtual_input_device_native_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device); - ClutterInputDeviceEvdev *device_evdev = - CLUTTER_INPUT_DEVICE_EVDEV (virtual_evdev->device); - ClutterTouchState *touch_state; - - if (time_us == CLUTTER_CURRENT_TIME) - time_us = g_get_monotonic_time (); - - touch_state = clutter_input_device_evdev_lookup_touch_state (device_evdev, - device_slot); - if (!touch_state) - return; - - clutter_seat_evdev_notify_touch_event (virtual_evdev->seat, - virtual_evdev->device, - CLUTTER_TOUCH_BEGIN, - time_us, - touch_state->seat_slot, - touch_state->coords.x, - touch_state->coords.y); - - clutter_input_device_evdev_release_touch_state (device_evdev, touch_state); -} - -static void -clutter_virtual_input_device_evdev_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (object); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (object); switch (prop_id) { @@ -609,13 +604,13 @@ clutter_virtual_input_device_evdev_get_property (GObject *object, } static void -clutter_virtual_input_device_evdev_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +meta_virtual_input_device_native_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (object); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (object); switch (prop_id) { @@ -629,12 +624,12 @@ clutter_virtual_input_device_evdev_set_property (GObject *object, } static void -clutter_virtual_input_device_evdev_constructed (GObject *object) +meta_virtual_input_device_native_constructed (GObject *object) { ClutterVirtualInputDevice *virtual_device = CLUTTER_VIRTUAL_INPUT_DEVICE (object); - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (object); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (object); ClutterDeviceManager *manager; ClutterInputDeviceType device_type; ClutterStage *stage; @@ -643,63 +638,63 @@ clutter_virtual_input_device_evdev_constructed (GObject *object) device_type = clutter_virtual_input_device_get_device_type (virtual_device); virtual_evdev->device = - _clutter_input_device_evdev_new_virtual (manager, - virtual_evdev->seat, - device_type, - CLUTTER_INPUT_MODE_SLAVE); + meta_input_device_native_new_virtual (manager, + virtual_evdev->seat, + device_type, + CLUTTER_INPUT_MODE_SLAVE); - stage = _clutter_device_manager_evdev_get_stage (CLUTTER_DEVICE_MANAGER_EVDEV (manager)); + stage = meta_device_manager_native_get_stage (META_DEVICE_MANAGER_NATIVE (manager)); _clutter_input_device_set_stage (virtual_evdev->device, stage); } static void -clutter_virtual_input_device_evdev_finalize (GObject *object) +meta_virtual_input_device_native_finalize (GObject *object) { ClutterVirtualInputDevice *virtual_device = CLUTTER_VIRTUAL_INPUT_DEVICE (object); - ClutterVirtualInputDeviceEvdev *virtual_evdev = - CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (object); + MetaVirtualInputDeviceNative *virtual_evdev = + META_VIRTUAL_INPUT_DEVICE_NATIVE (object); GObjectClass *object_class; release_pressed_buttons (virtual_device); g_clear_object (&virtual_evdev->device); object_class = - G_OBJECT_CLASS (clutter_virtual_input_device_evdev_parent_class); + G_OBJECT_CLASS (meta_virtual_input_device_native_parent_class); object_class->finalize (object); } static void -clutter_virtual_input_device_evdev_init (ClutterVirtualInputDeviceEvdev *virtual_device_evdev) +meta_virtual_input_device_native_init (MetaVirtualInputDeviceNative *virtual_device_evdev) { } static void -clutter_virtual_input_device_evdev_class_init (ClutterVirtualInputDeviceEvdevClass *klass) +meta_virtual_input_device_native_class_init (MetaVirtualInputDeviceNativeClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); ClutterVirtualInputDeviceClass *virtual_input_device_class = CLUTTER_VIRTUAL_INPUT_DEVICE_CLASS (klass); - object_class->get_property = clutter_virtual_input_device_evdev_get_property; - object_class->set_property = clutter_virtual_input_device_evdev_set_property; - object_class->constructed = clutter_virtual_input_device_evdev_constructed; - object_class->finalize = clutter_virtual_input_device_evdev_finalize; + object_class->get_property = meta_virtual_input_device_native_get_property; + object_class->set_property = meta_virtual_input_device_native_set_property; + object_class->constructed = meta_virtual_input_device_native_constructed; + object_class->finalize = meta_virtual_input_device_native_finalize; - virtual_input_device_class->notify_relative_motion = clutter_virtual_input_device_evdev_notify_relative_motion; - virtual_input_device_class->notify_absolute_motion = clutter_virtual_input_device_evdev_notify_absolute_motion; - virtual_input_device_class->notify_button = clutter_virtual_input_device_evdev_notify_button; - virtual_input_device_class->notify_key = clutter_virtual_input_device_evdev_notify_key; - virtual_input_device_class->notify_keyval = clutter_virtual_input_device_evdev_notify_keyval; - virtual_input_device_class->notify_discrete_scroll = clutter_virtual_input_device_evdev_notify_discrete_scroll; - virtual_input_device_class->notify_scroll_continuous = clutter_virtual_input_device_evdev_notify_scroll_continuous; - virtual_input_device_class->notify_touch_down = clutter_virtual_input_device_evdev_notify_touch_down; - virtual_input_device_class->notify_touch_motion = clutter_virtual_input_device_evdev_notify_touch_motion; - virtual_input_device_class->notify_touch_up = clutter_virtual_input_device_evdev_notify_touch_up; + virtual_input_device_class->notify_relative_motion = meta_virtual_input_device_native_notify_relative_motion; + virtual_input_device_class->notify_absolute_motion = meta_virtual_input_device_native_notify_absolute_motion; + virtual_input_device_class->notify_button = meta_virtual_input_device_native_notify_button; + virtual_input_device_class->notify_key = meta_virtual_input_device_native_notify_key; + virtual_input_device_class->notify_keyval = meta_virtual_input_device_native_notify_keyval; + virtual_input_device_class->notify_discrete_scroll = meta_virtual_input_device_native_notify_discrete_scroll; + virtual_input_device_class->notify_scroll_continuous = meta_virtual_input_device_native_notify_scroll_continuous; + virtual_input_device_class->notify_touch_down = meta_virtual_input_device_native_notify_touch_down; + virtual_input_device_class->notify_touch_motion = meta_virtual_input_device_native_notify_touch_motion; + virtual_input_device_class->notify_touch_up = meta_virtual_input_device_native_notify_touch_up; obj_props[PROP_SEAT] = g_param_spec_pointer ("seat", - P_("ClutterSeatEvdev"), - P_("ClutterSeatEvdev"), + P_("Seat"), + P_("Seat"), CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, PROP_LAST, obj_props); diff --git a/clutter/clutter/evdev/clutter-virtual-input-device-evdev.h b/src/backends/native/meta-virtual-input-device-native.h similarity index 60% rename from clutter/clutter/evdev/clutter-virtual-input-device-evdev.h rename to src/backends/native/meta-virtual-input-device-native.h index 9bb8db016..28d218abb 100644 --- a/clutter/clutter/evdev/clutter-virtual-input-device-evdev.h +++ b/src/backends/native/meta-virtual-input-device-native.h @@ -1,8 +1,4 @@ /* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * * Copyright (C) 2016 Red Hat Inc. * * This library is free software; you can redistribute it and/or @@ -21,15 +17,15 @@ * Author: Jonas Ådahl */ -#ifndef __CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV_H__ -#define __CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV_H__ +#ifndef META_VIRTUAL_INPUT_DEVICE_NATIVE_H +#define META_VIRTUAL_INPUT_DEVICE_NATIVE_H -#include "clutter-virtual-input-device.h" +#include "clutter/clutter-virtual-input-device.h" -#define CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE_EVDEV (clutter_virtual_input_device_evdev_get_type ()) -G_DECLARE_FINAL_TYPE (ClutterVirtualInputDeviceEvdev, - clutter_virtual_input_device_evdev, - CLUTTER, VIRTUAL_INPUT_DEVICE_EVDEV, +#define META_TYPE_VIRTUAL_INPUT_DEVICE_NATIVE (meta_virtual_input_device_native_get_type ()) +G_DECLARE_FINAL_TYPE (MetaVirtualInputDeviceNative, + meta_virtual_input_device_native, + META, VIRTUAL_INPUT_DEVICE_NATIVE, ClutterVirtualInputDevice) -#endif /* __CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV_H__ */ +#endif /* META_VIRTUAL_INPUT_DEVICE_NATIVE_H */ diff --git a/clutter/clutter/evdev/clutter-xkb-utils.c b/src/backends/native/meta-xkb-utils.c similarity index 78% rename from clutter/clutter/evdev/clutter-xkb-utils.c rename to src/backends/native/meta-xkb-utils.c index 0a9a8387b..6958c11ca 100644 --- a/clutter/clutter/evdev/clutter-xkb-utils.c +++ b/src/backends/native/meta-xkb-utils.c @@ -1,8 +1,4 @@ /* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * * Copyright (C) 2010 Intel Corporation. * * This library is free software; you can redistribute it and/or @@ -23,11 +19,11 @@ * Damien Lespiau */ -#include "clutter-build-config.h" +#include "config.h" -#include "clutter-keysyms.h" -#include "clutter-event-private.h" -#include "clutter-xkb-utils.h" +#include "backends/native/meta-xkb-utils.h" +#include "clutter/clutter-keysyms.h" +#include "clutter/clutter-mutter.h" /* * _clutter_event_new_from_evdev: Create a new Clutter ClutterKeyEvent @@ -44,14 +40,14 @@ * Return value: the new #ClutterEvent */ ClutterEvent * -_clutter_key_event_new_from_evdev (ClutterInputDevice *device, - ClutterInputDevice *core_device, - ClutterStage *stage, - struct xkb_state *xkb_state, - uint32_t button_state, - uint32_t _time, - xkb_keycode_t key, - uint32_t state) +meta_key_event_new_from_evdev (ClutterInputDevice *device, + ClutterInputDevice *core_device, + ClutterStage *stage, + struct xkb_state *xkb_state, + uint32_t button_state, + uint32_t _time, + xkb_keycode_t key, + uint32_t state) { ClutterEvent *event; xkb_keysym_t sym; @@ -78,7 +74,7 @@ _clutter_key_event_new_from_evdev (ClutterInputDevice *device, event->key.stage = stage; event->key.time = _time; - _clutter_xkb_translate_state (event, xkb_state, button_state); + meta_xkb_translate_state (event, xkb_state, button_state); event->key.hardware_keycode = key; event->key.keyval = sym; clutter_event_set_device (event, core_device); @@ -102,9 +98,9 @@ _clutter_key_event_new_from_evdev (ClutterInputDevice *device, } void -_clutter_xkb_translate_state (ClutterEvent *event, - struct xkb_state *state, - uint32_t button_state) +meta_xkb_translate_state (ClutterEvent *event, + struct xkb_state *state, + uint32_t button_state) { _clutter_event_set_state_full (event, button_state, diff --git a/src/backends/native/meta-xkb-utils.h b/src/backends/native/meta-xkb-utils.h new file mode 100644 index 000000000..a4c2de7dc --- /dev/null +++ b/src/backends/native/meta-xkb-utils.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2010 Intel Corporation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + + * Authors: + * Damien Lespiau + */ + +#ifndef META_XKB_UTILS_H +#define META_XKB_UTILS_H + +#include + +#include "clutter/clutter.h" + +ClutterEvent * meta_key_event_new_from_evdev (ClutterInputDevice *device, + ClutterInputDevice *core_keyboard, + ClutterStage *stage, + struct xkb_state *xkb_state, + uint32_t button_state, + uint32_t _time, + uint32_t key, + uint32_t state); +void meta_xkb_translate_state (ClutterEvent *event, + struct xkb_state *xkb_state, + uint32_t button_state); + +#endif /* META_XKB_UTILS_H */ diff --git a/src/meson.build b/src/meson.build index 2aff56146..182f7f5f5 100644 --- a/src/meson.build +++ b/src/meson.build @@ -125,6 +125,8 @@ if have_native_backend gudev_dep, libgbm_dep, logind_provider_dep, + libudev_dep, + xkbcommon_dep, ] endif @@ -599,16 +601,26 @@ if have_native_backend 'backends/native/meta-crtc-kms.h', 'backends/native/meta-cursor-renderer-native.c', 'backends/native/meta-cursor-renderer-native.h', + 'backends/native/meta-device-manager-native.c', + 'backends/native/meta-device-manager-native.h', 'backends/native/meta-drm-buffer-dumb.c', 'backends/native/meta-drm-buffer-dumb.h', 'backends/native/meta-drm-buffer-gbm.c', 'backends/native/meta-drm-buffer-gbm.h', 'backends/native/meta-drm-buffer.c', 'backends/native/meta-drm-buffer.h', + 'backends/native/meta-event-native.c', + 'backends/native/meta-event-native.h', 'backends/native/meta-gpu-kms.c', 'backends/native/meta-gpu-kms.h', + 'backends/native/meta-input-device-native.c', + 'backends/native/meta-input-device-native.h', + 'backends/native/meta-input-device-tool-native.c', + 'backends/native/meta-input-device-tool-native.h', 'backends/native/meta-input-settings-native.c', 'backends/native/meta-input-settings-native.h', + 'backends/native/meta-keymap-native.c', + 'backends/native/meta-keymap-native.h', 'backends/native/meta-launcher.c', 'backends/native/meta-launcher.h', 'backends/native/meta-monitor-manager-kms.c', @@ -647,10 +659,16 @@ if have_native_backend 'backends/native/meta-renderer-native-gles3.c', 'backends/native/meta-renderer-native-gles3.h', 'backends/native/meta-renderer-native.h', + 'backends/native/meta-seat-native.c', + 'backends/native/meta-seat-native.h', 'backends/native/meta-stage-native.c', 'backends/native/meta-stage-native.h', 'backends/native/meta-udev.c', 'backends/native/meta-udev.h', + 'backends/native/meta-virtual-input-device-native.c', + 'backends/native/meta-virtual-input-device-native.h', + 'backends/native/meta-xkb-utils.c', + 'backends/native/meta-xkb-utils.h', ] endif diff --git a/src/wayland/meta-wayland-keyboard.c b/src/wayland/meta-wayland-keyboard.c index 291faa1e9..0c3447137 100644 --- a/src/wayland/meta-wayland-keyboard.c +++ b/src/wayland/meta-wayland-keyboard.c @@ -56,12 +56,12 @@ #include #include "backends/meta-backend-private.h" -#include "clutter/evdev/clutter-evdev.h" #include "core/display-private.h" #include "wayland/meta-wayland-private.h" #ifdef HAVE_NATIVE_BACKEND #include "backends/native/meta-backend-native.h" +#include "backends/native/meta-event-native.h" #endif #define GSD_KEYBOARD_SCHEMA "org.gnome.settings-daemon.peripherals.keyboard" @@ -531,7 +531,7 @@ default_grab_key (MetaWaylandKeyboardGrab *grab, #ifdef HAVE_NATIVE_BACKEND if (META_IS_BACKEND_NATIVE (backend)) - code = clutter_evdev_event_get_event_code (event); + code = meta_event_native_get_event_code (event); if (code == 0) #endif code = evdev_code (&event->key); diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c index add225562..e41aab8e0 100644 --- a/src/wayland/meta-wayland-pointer.c +++ b/src/wayland/meta-wayland-pointer.c @@ -51,7 +51,6 @@ #include "backends/meta-cursor-tracker-private.h" #include "backends/meta-cursor.h" #include "clutter/clutter.h" -#include "clutter/evdev/clutter-evdev.h" #include "cogl/cogl-wayland-server.h" #include "cogl/cogl.h" #include "compositor/meta-surface-actor-wayland.h" @@ -67,6 +66,7 @@ #ifdef HAVE_NATIVE_BACKEND #include "backends/native/meta-backend-native.h" +#include "backends/native/meta-event-native.h" #endif #include "relative-pointer-unstable-v1-server-protocol.h" @@ -302,7 +302,7 @@ meta_wayland_pointer_send_relative_motion (MetaWaylandPointer *pointer, return; #ifdef HAVE_NATIVE_BACKEND - time_us = clutter_evdev_event_get_time_usec (event); + time_us = meta_event_native_get_time_usec (event); if (time_us == 0) #endif time_us = clutter_event_get_time (event) * 1000ULL; @@ -376,7 +376,7 @@ meta_wayland_pointer_send_button (MetaWaylandPointer *pointer, #ifdef HAVE_NATIVE_BACKEND MetaBackend *backend = meta_get_backend (); if (META_IS_BACKEND_NATIVE (backend)) - button = clutter_evdev_event_get_event_code (event); + button = meta_event_native_get_event_code (event); else #endif { diff --git a/src/wayland/meta-wayland-tablet-pad-group.c b/src/wayland/meta-wayland-tablet-pad-group.c index 583fa0999..4229f834a 100644 --- a/src/wayland/meta-wayland-tablet-pad-group.c +++ b/src/wayland/meta-wayland-tablet-pad-group.c @@ -34,7 +34,8 @@ #ifdef HAVE_NATIVE_BACKEND #include "backends/native/meta-backend-native.h" -#include "clutter/evdev/clutter-evdev.h" +#include "backends/native/meta-event-native.h" +#include "backends/native/meta-input-device-native.h" #endif #include "tablet-unstable-v2-server-protocol.h" @@ -131,7 +132,7 @@ meta_wayland_tablet_pad_group_has_button (MetaWaylandTabletPadGroup *group, struct libinput_tablet_pad_mode_group *mode_group; guint n_group; - libinput_device = clutter_evdev_input_device_get_libinput_device (group->pad->device); + libinput_device = meta_input_device_native_get_libinput_device (group->pad->device); n_group = g_list_index (group->pad->groups, group); mode_group = libinput_device_tablet_pad_get_mode_group (libinput_device, n_group); diff --git a/src/wayland/meta-wayland-tablet-pad.c b/src/wayland/meta-wayland-tablet-pad.c index ed31e236f..335d3d030 100644 --- a/src/wayland/meta-wayland-tablet-pad.c +++ b/src/wayland/meta-wayland-tablet-pad.c @@ -38,8 +38,9 @@ #include "wayland/meta-wayland-tablet.h" #ifdef HAVE_NATIVE_BACKEND +#include #include "backends/native/meta-backend-native.h" -#include "clutter/evdev/clutter-evdev.h" +#include "backends/native/meta-input-device-native.h" #endif #include "tablet-unstable-v2-server-protocol.h" @@ -69,7 +70,7 @@ group_rings_strips (MetaWaylandTabletPad *pad) struct libinput_device *libinput_device = NULL; if (META_IS_BACKEND_NATIVE (backend)) - libinput_device = clutter_evdev_input_device_get_libinput_device (pad->device); + libinput_device = meta_input_device_native_get_libinput_device (pad->device); #endif for (n_group = 0, g = pad->groups; g; g = g->next) @@ -153,7 +154,7 @@ meta_wayland_tablet_pad_new (ClutterInputDevice *device, { struct libinput_device *libinput_device; - libinput_device = clutter_evdev_input_device_get_libinput_device (device); + libinput_device = meta_input_device_native_get_libinput_device (device); pad->n_buttons = libinput_device_tablet_pad_get_num_buttons (libinput_device); } #endif diff --git a/src/wayland/meta-wayland-tablet-seat.c b/src/wayland/meta-wayland-tablet-seat.c index dd35724c4..b4bc4aa58 100644 --- a/src/wayland/meta-wayland-tablet-seat.c +++ b/src/wayland/meta-wayland-tablet-seat.c @@ -34,7 +34,6 @@ #ifdef HAVE_NATIVE_BACKEND #include "backends/native/meta-backend-native.h" -#include "clutter/evdev/clutter-evdev.h" #endif #include "tablet-unstable-v2-server-protocol.h" diff --git a/src/wayland/meta-wayland-tablet-tool.c b/src/wayland/meta-wayland-tablet-tool.c index 52c63dd96..cce93030b 100644 --- a/src/wayland/meta-wayland-tablet-tool.c +++ b/src/wayland/meta-wayland-tablet-tool.c @@ -28,7 +28,6 @@ #include #include -#include "clutter/evdev/clutter-evdev.h" #include "wayland/meta-wayland-private.h" #include "wayland/meta-wayland-tablet-cursor-surface.h" #include "compositor/meta-surface-actor-wayland.h" @@ -41,6 +40,7 @@ #include #include "backends/native/meta-backend-native.h" +#include "backends/native/meta-event-native.h" #endif #include "tablet-unstable-v2-server-protocol.h" @@ -720,7 +720,7 @@ broadcast_button (MetaWaylandTabletTool *tool, MetaBackend *backend = meta_get_backend (); if (META_IS_BACKEND_NATIVE (backend)) { - button = clutter_evdev_event_get_event_code (event); + button = meta_event_native_get_event_code (event); } else #endif diff --git a/src/wayland/meta-wayland-touch.c b/src/wayland/meta-wayland-touch.c index 5ea4c4b27..80c3b57e0 100644 --- a/src/wayland/meta-wayland-touch.c +++ b/src/wayland/meta-wayland-touch.c @@ -27,11 +27,13 @@ #include #include "compositor/meta-surface-actor-wayland.h" -#include "clutter/evdev/clutter-evdev.h" #include "wayland/meta-wayland-private.h" #ifdef HAVE_NATIVE_BACKEND +#include #include "backends/native/meta-backend-native.h" +#include "backends/native/meta-device-manager-native.h" +#include "backends/native/meta-event-native.h" #endif G_DEFINE_TYPE (MetaWaylandTouch, meta_wayland_touch, @@ -186,7 +188,7 @@ touch_get_info (MetaWaylandTouch *touch, if (!touch_info && create) { touch_info = g_new0 (MetaWaylandTouchInfo, 1); - touch_info->slot = clutter_evdev_event_sequence_get_slot (sequence); + touch_info->slot = meta_event_native_sequence_get_slot (sequence); g_hash_table_insert (touch->touches, sequence, touch_info); } @@ -412,7 +414,7 @@ check_send_frame_event (MetaWaylandTouch *touch, if (META_IS_BACKEND_NATIVE (backend)) { sequence = clutter_event_get_event_sequence (event); - slot = clutter_evdev_event_sequence_get_slot (sequence); + slot = meta_event_native_sequence_get_slot (sequence); touch->frame_slots &= ~(1 << slot); if (touch->frame_slots == 0) @@ -568,7 +570,7 @@ meta_wayland_touch_enable (MetaWaylandTouch *touch) #ifdef HAVE_NATIVE_BACKEND MetaBackend *backend = meta_get_backend (); if (META_IS_BACKEND_NATIVE (backend)) - clutter_evdev_add_filter (evdev_filter_func, touch, NULL); + meta_device_manager_native_add_filter (evdev_filter_func, touch, NULL); #endif } @@ -578,7 +580,7 @@ meta_wayland_touch_disable (MetaWaylandTouch *touch) #ifdef HAVE_NATIVE_BACKEND MetaBackend *backend = meta_get_backend (); if (META_IS_BACKEND_NATIVE (backend)) - clutter_evdev_remove_filter (evdev_filter_func, touch); + meta_device_manager_native_remove_filter (evdev_filter_func, touch); #endif meta_wayland_touch_cancel (touch);