mirror of
https://github.com/brl/mutter.git
synced 2025-06-14 01:09:30 +00:00
native: Implement ClutterSeat
We had the MetaSeatNative struct around, so use it as the base of this Clutter object. A few responsibilities were drawn from ClutterDeviceManager. https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
This commit is contained in:
@ -62,8 +62,8 @@ meta_input_device_native_finalize (GObject *object)
|
||||
{
|
||||
ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (object);
|
||||
MetaInputDeviceNative *device_evdev = META_INPUT_DEVICE_NATIVE (object);
|
||||
MetaDeviceManagerNative *manager_evdev =
|
||||
META_DEVICE_MANAGER_NATIVE (device->device_manager);
|
||||
ClutterBackend *backend;
|
||||
ClutterSeat *seat;
|
||||
|
||||
if (device_evdev->libinput_device)
|
||||
libinput_device_unref (device_evdev->libinput_device);
|
||||
@ -71,7 +71,9 @@ meta_input_device_native_finalize (GObject *object)
|
||||
meta_input_device_native_release_touch_slots (device_evdev,
|
||||
g_get_monotonic_time ());
|
||||
|
||||
meta_device_manager_native_release_device_id (manager_evdev, device);
|
||||
backend = clutter_get_default_backend ();
|
||||
seat = clutter_backend_get_default_seat (backend);
|
||||
meta_seat_native_release_device_id (META_SEAT_NATIVE (seat), device);
|
||||
|
||||
clear_slow_keys (device_evdev);
|
||||
stop_bounce_keys (device_evdev);
|
||||
@ -1320,13 +1322,11 @@ meta_input_device_native_init (MetaInputDeviceNative *self)
|
||||
* it with the provided seat.
|
||||
*/
|
||||
ClutterInputDevice *
|
||||
meta_input_device_native_new (ClutterDeviceManager *manager,
|
||||
MetaSeatNative *seat,
|
||||
meta_input_device_native_new (MetaSeatNative *seat,
|
||||
struct libinput_device *libinput_device)
|
||||
{
|
||||
MetaInputDeviceNative *device;
|
||||
ClutterInputDeviceType type;
|
||||
MetaDeviceManagerNative *manager_evdev;
|
||||
char *vendor, *product;
|
||||
int device_id, n_rings = 0, n_strips = 0, n_groups = 1;
|
||||
char *node_path;
|
||||
@ -1335,8 +1335,7 @@ meta_input_device_native_new (ClutterDeviceManager *manager,
|
||||
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 = META_DEVICE_MANAGER_NATIVE (manager);
|
||||
device_id = meta_device_manager_native_acquire_device_id (manager_evdev);
|
||||
device_id = meta_seat_native_acquire_device_id (seat);
|
||||
node_path = g_strdup_printf ("/dev/input/%s", libinput_device_get_sysname (libinput_device));
|
||||
|
||||
if (libinput_device_has_capability (libinput_device,
|
||||
@ -1350,7 +1349,6 @@ meta_input_device_native_new (ClutterDeviceManager *manager,
|
||||
device = g_object_new (META_TYPE_INPUT_DEVICE_NATIVE,
|
||||
"id", device_id,
|
||||
"name", libinput_device_get_name (libinput_device),
|
||||
"device-manager", manager,
|
||||
"device-type", type,
|
||||
"device-mode", CLUTTER_INPUT_MODE_SLAVE,
|
||||
"enabled", TRUE,
|
||||
@ -1360,6 +1358,7 @@ meta_input_device_native_new (ClutterDeviceManager *manager,
|
||||
"n-strips", n_strips,
|
||||
"n-mode-groups", n_groups,
|
||||
"device-node", node_path,
|
||||
"seat", seat,
|
||||
NULL);
|
||||
|
||||
device->seat = seat;
|
||||
@ -1379,20 +1378,17 @@ meta_input_device_native_new (ClutterDeviceManager *manager,
|
||||
|
||||
/*
|
||||
* meta_input_device_native_new_virtual:
|
||||
* @manager: the device manager
|
||||
* @seat: the seat the device will belong to
|
||||
* @type: the input device type
|
||||
*
|
||||
* Create a new virtual ClutterInputDevice of the given type.
|
||||
*/
|
||||
ClutterInputDevice *
|
||||
meta_input_device_native_new_virtual (ClutterDeviceManager *manager,
|
||||
MetaSeatNative *seat,
|
||||
meta_input_device_native_new_virtual (MetaSeatNative *seat,
|
||||
ClutterInputDeviceType type,
|
||||
ClutterInputMode mode)
|
||||
{
|
||||
MetaInputDeviceNative *device;
|
||||
MetaDeviceManagerNative *manager_evdev;
|
||||
const char *name;
|
||||
int device_id;
|
||||
|
||||
@ -1412,15 +1408,14 @@ meta_input_device_native_new_virtual (ClutterDeviceManager *manager,
|
||||
break;
|
||||
};
|
||||
|
||||
manager_evdev = META_DEVICE_MANAGER_NATIVE (manager);
|
||||
device_id = meta_device_manager_native_acquire_device_id (manager_evdev);
|
||||
device_id = meta_seat_native_acquire_device_id (seat);
|
||||
device = g_object_new (META_TYPE_INPUT_DEVICE_NATIVE,
|
||||
"id", device_id,
|
||||
"name", name,
|
||||
"device-manager", manager,
|
||||
"device-type", type,
|
||||
"device-mode", mode,
|
||||
"enabled", TRUE,
|
||||
"seat", seat,
|
||||
NULL);
|
||||
|
||||
device->seat = seat;
|
||||
|
Reference in New Issue
Block a user