device/xi2: Implement get_core_device()
We ask XI2 to get the client pointer for CLUTTER_POINTER_DEVICE, and we use the attached keyboard device for CLUTTER_KEYBOARD_DEVICE. For everything else, we return NULL.
This commit is contained in:
parent
9c48486d7a
commit
2cb0077f7d
@ -896,6 +896,31 @@ static ClutterInputDevice *
|
|||||||
clutter_device_manager_xi2_get_core_device (ClutterDeviceManager *manager,
|
clutter_device_manager_xi2_get_core_device (ClutterDeviceManager *manager,
|
||||||
ClutterInputDeviceType device_type)
|
ClutterInputDeviceType device_type)
|
||||||
{
|
{
|
||||||
|
ClutterDeviceManagerXI2 *manager_xi2 = CLUTTER_DEVICE_MANAGER_XI2 (manager);
|
||||||
|
ClutterBackendX11 *backend_x11;
|
||||||
|
ClutterInputDevice *device;
|
||||||
|
int device_id;
|
||||||
|
|
||||||
|
backend_x11 =
|
||||||
|
CLUTTER_BACKEND_X11 (_clutter_device_manager_get_backend (manager));
|
||||||
|
|
||||||
|
XIGetClientPointer (backend_x11->xdpy, None, &device_id);
|
||||||
|
|
||||||
|
device = g_hash_table_lookup (manager_xi2->devices_by_id,
|
||||||
|
GINT_TO_POINTER (device_id));
|
||||||
|
|
||||||
|
switch (device_type)
|
||||||
|
{
|
||||||
|
case CLUTTER_POINTER_DEVICE:
|
||||||
|
return device;
|
||||||
|
|
||||||
|
case CLUTTER_KEYBOARD_DEVICE:
|
||||||
|
return clutter_input_device_get_associated_device (device);
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user