virtual-input-device/native: Drop the separate "seat" property
The "seat" property is already used by the parent ClutterVirtualInputDevice - re-using this property means the parent's propery never gets set so clutter_virtual_input_device_get_seat() returns NULL. This causes mutter to crash if a tablet pad sends a key event via a pad ring or strip. Since this type is only ever constructed with a MetaSeatNative as seat we can extract that object through the parent and drop our property. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4247>
This commit is contained in:
parent
502e762ad0
commit
751277a7ef
@ -33,7 +33,6 @@ enum
|
|||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
|
|
||||||
PROP_SEAT,
|
|
||||||
PROP_SLOT_BASE,
|
PROP_SLOT_BASE,
|
||||||
|
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
@ -54,7 +53,6 @@ struct _MetaVirtualInputDeviceNative
|
|||||||
{
|
{
|
||||||
ClutterVirtualInputDevice parent;
|
ClutterVirtualInputDevice parent;
|
||||||
|
|
||||||
MetaSeatNative *seat;
|
|
||||||
guint slot_base;
|
guint slot_base;
|
||||||
ImplState *impl_state;
|
ImplState *impl_state;
|
||||||
};
|
};
|
||||||
@ -204,12 +202,22 @@ release_device_in_impl (GTask *task)
|
|||||||
return G_SOURCE_REMOVE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MetaSeatNative*
|
||||||
|
meta_virtual_input_device_native_get_seat_native (MetaVirtualInputDeviceNative *virtual_native)
|
||||||
|
{
|
||||||
|
ClutterSeat *seat =
|
||||||
|
clutter_virtual_input_device_get_seat (CLUTTER_VIRTUAL_INPUT_DEVICE (virtual_native));
|
||||||
|
return META_SEAT_NATIVE (seat);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
notify_relative_motion_in_impl (GTask *task)
|
notify_relative_motion_in_impl (GTask *task)
|
||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
MetaSeatImpl *seat = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat = seat_native->impl;
|
||||||
MetaVirtualEventMotion *event = g_task_get_task_data (task);
|
MetaVirtualEventMotion *event = g_task_get_task_data (task);
|
||||||
|
|
||||||
if (event->time_us == CLUTTER_CURRENT_TIME)
|
if (event->time_us == CLUTTER_CURRENT_TIME)
|
||||||
@ -236,6 +244,8 @@ meta_virtual_input_device_native_notify_relative_motion (ClutterVirtualInputDevi
|
|||||||
MetaVirtualEventMotion *event;
|
MetaVirtualEventMotion *event;
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GTask *task;
|
GTask *task;
|
||||||
|
|
||||||
g_return_if_fail (virtual_native->impl_state != NULL);
|
g_return_if_fail (virtual_native->impl_state != NULL);
|
||||||
@ -247,7 +257,7 @@ meta_virtual_input_device_native_notify_relative_motion (ClutterVirtualInputDevi
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, event, g_free);
|
g_task_set_task_data (task, event, g_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) notify_relative_motion_in_impl);
|
(GSourceFunc) notify_relative_motion_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
@ -257,7 +267,9 @@ notify_absolute_motion_in_impl (GTask *task)
|
|||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
MetaSeatImpl *seat = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat = seat_native->impl;
|
||||||
MetaVirtualEventMotion *event = g_task_get_task_data (task);
|
MetaVirtualEventMotion *event = g_task_get_task_data (task);
|
||||||
|
|
||||||
if (event->time_us == CLUTTER_CURRENT_TIME)
|
if (event->time_us == CLUTTER_CURRENT_TIME)
|
||||||
@ -282,6 +294,8 @@ meta_virtual_input_device_native_notify_absolute_motion (ClutterVirtualInputDevi
|
|||||||
MetaVirtualEventMotion *event;
|
MetaVirtualEventMotion *event;
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GTask *task;
|
GTask *task;
|
||||||
|
|
||||||
g_return_if_fail (virtual_native->impl_state != NULL);
|
g_return_if_fail (virtual_native->impl_state != NULL);
|
||||||
@ -293,7 +307,7 @@ meta_virtual_input_device_native_notify_absolute_motion (ClutterVirtualInputDevi
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, event, g_free);
|
g_task_set_task_data (task, event, g_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) notify_absolute_motion_in_impl);
|
(GSourceFunc) notify_absolute_motion_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
@ -303,7 +317,9 @@ notify_button_in_impl (GTask *task)
|
|||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
MetaSeatImpl *seat = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat = seat_native->impl;
|
||||||
MetaVirtualEventButton *event = g_task_get_task_data (task);
|
MetaVirtualEventButton *event = g_task_get_task_data (task);
|
||||||
int button_count;
|
int button_count;
|
||||||
int evdev_button;
|
int evdev_button;
|
||||||
@ -356,6 +372,8 @@ meta_virtual_input_device_native_notify_button (ClutterVirtualInputDevice *virtu
|
|||||||
MetaVirtualEventButton *event;
|
MetaVirtualEventButton *event;
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GTask *task;
|
GTask *task;
|
||||||
|
|
||||||
g_return_if_fail (virtual_native->impl_state != NULL);
|
g_return_if_fail (virtual_native->impl_state != NULL);
|
||||||
@ -367,7 +385,7 @@ meta_virtual_input_device_native_notify_button (ClutterVirtualInputDevice *virtu
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, event, g_free);
|
g_task_set_task_data (task, event, g_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) notify_button_in_impl);
|
(GSourceFunc) notify_button_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
@ -377,7 +395,9 @@ notify_key_in_impl (GTask *task)
|
|||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
MetaSeatImpl *seat = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat = seat_native->impl;
|
||||||
MetaVirtualEventKey *event = g_task_get_task_data (task);
|
MetaVirtualEventKey *event = g_task_get_task_data (task);
|
||||||
int key_count;
|
int key_count;
|
||||||
|
|
||||||
@ -426,6 +446,8 @@ meta_virtual_input_device_native_notify_key (ClutterVirtualInputDevice *virtual_
|
|||||||
MetaVirtualEventKey *event;
|
MetaVirtualEventKey *event;
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GTask *task;
|
GTask *task;
|
||||||
|
|
||||||
g_return_if_fail (virtual_native->impl_state != NULL);
|
g_return_if_fail (virtual_native->impl_state != NULL);
|
||||||
@ -437,7 +459,7 @@ meta_virtual_input_device_native_notify_key (ClutterVirtualInputDevice *virtual_
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, event, g_free);
|
g_task_set_task_data (task, event, g_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) notify_key_in_impl);
|
(GSourceFunc) notify_key_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
@ -450,6 +472,8 @@ pick_keycode_for_keyval_in_current_group_in_impl (ClutterVirtualInputDevice *vir
|
|||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
ClutterSeat *seat;
|
ClutterSeat *seat;
|
||||||
ClutterKeymap *keymap;
|
ClutterKeymap *keymap;
|
||||||
struct xkb_keymap *xkb_keymap;
|
struct xkb_keymap *xkb_keymap;
|
||||||
@ -460,7 +484,7 @@ pick_keycode_for_keyval_in_current_group_in_impl (ClutterVirtualInputDevice *vir
|
|||||||
seat = clutter_virtual_input_device_get_seat (virtual_device);
|
seat = clutter_virtual_input_device_get_seat (virtual_device);
|
||||||
keymap = clutter_seat_get_keymap (seat);
|
keymap = clutter_seat_get_keymap (seat);
|
||||||
xkb_keymap = meta_keymap_native_get_keyboard_map_in_impl (META_KEYMAP_NATIVE (keymap));
|
xkb_keymap = meta_keymap_native_get_keyboard_map_in_impl (META_KEYMAP_NATIVE (keymap));
|
||||||
state = meta_seat_impl_get_xkb_state_in_impl (virtual_native->seat->impl);
|
state = meta_seat_impl_get_xkb_state_in_impl (seat_native->impl);
|
||||||
|
|
||||||
layout = xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_EFFECTIVE);
|
layout = xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_EFFECTIVE);
|
||||||
min_keycode = xkb_keymap_min_keycode (xkb_keymap);
|
min_keycode = xkb_keymap_min_keycode (xkb_keymap);
|
||||||
@ -498,6 +522,8 @@ apply_level_modifiers_in_impl (ClutterVirtualInputDevice *virtual_device,
|
|||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
guint keysym, keycode, evcode;
|
guint keysym, keycode, evcode;
|
||||||
|
|
||||||
if (level == 0)
|
if (level == 0)
|
||||||
@ -528,7 +554,7 @@ apply_level_modifiers_in_impl (ClutterVirtualInputDevice *virtual_device,
|
|||||||
key_state == CLUTTER_KEY_STATE_PRESSED ? "press" : "release",
|
key_state == CLUTTER_KEY_STATE_PRESSED ? "press" : "release",
|
||||||
evcode, virtual_device);
|
evcode, virtual_device);
|
||||||
|
|
||||||
meta_seat_impl_notify_key_in_impl (virtual_native->seat->impl,
|
meta_seat_impl_notify_key_in_impl (seat_native->impl,
|
||||||
virtual_native->impl_state->device,
|
virtual_native->impl_state->device,
|
||||||
time_us,
|
time_us,
|
||||||
evcode,
|
evcode,
|
||||||
@ -543,7 +569,9 @@ notify_keyval_in_impl (GTask *task)
|
|||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
ClutterVirtualInputDevice *virtual_device =
|
ClutterVirtualInputDevice *virtual_device =
|
||||||
CLUTTER_VIRTUAL_INPUT_DEVICE (virtual_native);
|
CLUTTER_VIRTUAL_INPUT_DEVICE (virtual_native);
|
||||||
MetaSeatImpl *seat = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat = seat_native->impl;
|
||||||
MetaVirtualEventKey *event = g_task_get_task_data (task);
|
MetaVirtualEventKey *event = g_task_get_task_data (task);
|
||||||
int key_count;
|
int key_count;
|
||||||
guint keycode = 0, level = 0, evcode = 0;
|
guint keycode = 0, level = 0, evcode = 0;
|
||||||
@ -616,6 +644,8 @@ meta_virtual_input_device_native_notify_keyval (ClutterVirtualInputDevice *virtu
|
|||||||
MetaVirtualEventKey *event;
|
MetaVirtualEventKey *event;
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GTask *task;
|
GTask *task;
|
||||||
|
|
||||||
g_return_if_fail (virtual_native->impl_state != NULL);
|
g_return_if_fail (virtual_native->impl_state != NULL);
|
||||||
@ -627,7 +657,7 @@ meta_virtual_input_device_native_notify_keyval (ClutterVirtualInputDevice *virtu
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, event, g_free);
|
g_task_set_task_data (task, event, g_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) notify_keyval_in_impl);
|
(GSourceFunc) notify_keyval_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
@ -666,7 +696,9 @@ notify_discrete_scroll_in_impl (GTask *task)
|
|||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
MetaSeatImpl *seat = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat = seat_native->impl;
|
||||||
MetaVirtualEventScroll *event = g_task_get_task_data (task);
|
MetaVirtualEventScroll *event = g_task_get_task_data (task);
|
||||||
double discrete_dx = 0.0, discrete_dy = 0.0;
|
double discrete_dx = 0.0, discrete_dy = 0.0;
|
||||||
|
|
||||||
@ -695,6 +727,8 @@ meta_virtual_input_device_native_notify_discrete_scroll (ClutterVirtualInputDevi
|
|||||||
MetaVirtualEventScroll *event;
|
MetaVirtualEventScroll *event;
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GTask *task;
|
GTask *task;
|
||||||
|
|
||||||
g_return_if_fail (virtual_native->impl_state != NULL);
|
g_return_if_fail (virtual_native->impl_state != NULL);
|
||||||
@ -706,7 +740,7 @@ meta_virtual_input_device_native_notify_discrete_scroll (ClutterVirtualInputDevi
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, event, g_free);
|
g_task_set_task_data (task, event, g_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) notify_discrete_scroll_in_impl);
|
(GSourceFunc) notify_discrete_scroll_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
@ -716,7 +750,9 @@ notify_scroll_continuous_in_impl (GTask *task)
|
|||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
MetaSeatImpl *seat = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat = seat_native->impl;
|
||||||
MetaVirtualEventScroll *event = g_task_get_task_data (task);
|
MetaVirtualEventScroll *event = g_task_get_task_data (task);
|
||||||
|
|
||||||
if (event->time_us == CLUTTER_CURRENT_TIME)
|
if (event->time_us == CLUTTER_CURRENT_TIME)
|
||||||
@ -756,6 +792,8 @@ meta_virtual_input_device_native_notify_scroll_continuous (ClutterVirtualInputDe
|
|||||||
MetaVirtualEventScroll *event;
|
MetaVirtualEventScroll *event;
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GTask *task;
|
GTask *task;
|
||||||
|
|
||||||
g_return_if_fail (virtual_native->impl_state != NULL);
|
g_return_if_fail (virtual_native->impl_state != NULL);
|
||||||
@ -769,7 +807,7 @@ meta_virtual_input_device_native_notify_scroll_continuous (ClutterVirtualInputDe
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, event, g_free);
|
g_task_set_task_data (task, event, g_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) notify_scroll_continuous_in_impl);
|
(GSourceFunc) notify_scroll_continuous_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
@ -779,7 +817,9 @@ notify_touch_down_in_impl (GTask *task)
|
|||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
MetaSeatImpl *seat = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat = seat_native->impl;
|
||||||
MetaVirtualEventTouch *event = g_task_get_task_data (task);
|
MetaVirtualEventTouch *event = g_task_get_task_data (task);
|
||||||
MetaTouchState *touch_state;
|
MetaTouchState *touch_state;
|
||||||
|
|
||||||
@ -817,6 +857,8 @@ meta_virtual_input_device_native_notify_touch_down (ClutterVirtualInputDevice *v
|
|||||||
MetaVirtualEventTouch *event;
|
MetaVirtualEventTouch *event;
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GTask *task;
|
GTask *task;
|
||||||
|
|
||||||
g_return_if_fail (virtual_native->impl_state != NULL);
|
g_return_if_fail (virtual_native->impl_state != NULL);
|
||||||
@ -829,7 +871,7 @@ meta_virtual_input_device_native_notify_touch_down (ClutterVirtualInputDevice *v
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, event, g_free);
|
g_task_set_task_data (task, event, g_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) notify_touch_down_in_impl);
|
(GSourceFunc) notify_touch_down_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
@ -839,7 +881,9 @@ notify_touch_motion_in_impl (GTask *task)
|
|||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
MetaSeatImpl *seat = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat = seat_native->impl;
|
||||||
MetaVirtualEventTouch *event = g_task_get_task_data (task);
|
MetaVirtualEventTouch *event = g_task_get_task_data (task);
|
||||||
MetaTouchState *touch_state;
|
MetaTouchState *touch_state;
|
||||||
|
|
||||||
@ -877,6 +921,8 @@ meta_virtual_input_device_native_notify_touch_motion (ClutterVirtualInputDevice
|
|||||||
MetaVirtualEventTouch *event;
|
MetaVirtualEventTouch *event;
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GTask *task;
|
GTask *task;
|
||||||
|
|
||||||
g_return_if_fail (virtual_native->impl_state != NULL);
|
g_return_if_fail (virtual_native->impl_state != NULL);
|
||||||
@ -889,7 +935,7 @@ meta_virtual_input_device_native_notify_touch_motion (ClutterVirtualInputDevice
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, event, g_free);
|
g_task_set_task_data (task, event, g_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) notify_touch_motion_in_impl);
|
(GSourceFunc) notify_touch_motion_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
@ -899,7 +945,9 @@ notify_touch_up_in_impl (GTask *task)
|
|||||||
{
|
{
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
MetaSeatImpl *seat = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat = seat_native->impl;
|
||||||
MetaVirtualEventTouch *event = g_task_get_task_data (task);
|
MetaVirtualEventTouch *event = g_task_get_task_data (task);
|
||||||
MetaTouchState *touch_state;
|
MetaTouchState *touch_state;
|
||||||
|
|
||||||
@ -919,7 +967,7 @@ notify_touch_up_in_impl (GTask *task)
|
|||||||
touch_state->coords.x,
|
touch_state->coords.x,
|
||||||
touch_state->coords.y);
|
touch_state->coords.y);
|
||||||
|
|
||||||
meta_seat_impl_release_touch_state_in_impl (virtual_native->seat->impl,
|
meta_seat_impl_release_touch_state_in_impl (seat_native->impl,
|
||||||
touch_state->seat_slot);
|
touch_state->seat_slot);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
@ -935,6 +983,8 @@ meta_virtual_input_device_native_notify_touch_up (ClutterVirtualInputDevice *vir
|
|||||||
MetaVirtualEventTouch *event;
|
MetaVirtualEventTouch *event;
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GTask *task;
|
GTask *task;
|
||||||
|
|
||||||
g_return_if_fail (virtual_native->impl_state != NULL);
|
g_return_if_fail (virtual_native->impl_state != NULL);
|
||||||
@ -945,7 +995,7 @@ meta_virtual_input_device_native_notify_touch_up (ClutterVirtualInputDevice *vir
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, event, g_free);
|
g_task_set_task_data (task, event, g_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) notify_touch_up_in_impl);
|
(GSourceFunc) notify_touch_up_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
@ -961,9 +1011,6 @@ meta_virtual_input_device_native_get_property (GObject *object,
|
|||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_SEAT:
|
|
||||||
g_value_set_pointer (value, virtual_native->seat);
|
|
||||||
break;
|
|
||||||
case PROP_SLOT_BASE:
|
case PROP_SLOT_BASE:
|
||||||
g_value_set_uint (value, virtual_native->slot_base);
|
g_value_set_uint (value, virtual_native->slot_base);
|
||||||
break;
|
break;
|
||||||
@ -984,9 +1031,6 @@ meta_virtual_input_device_native_set_property (GObject *object,
|
|||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_SEAT:
|
|
||||||
virtual_native->seat = g_value_get_pointer (value);
|
|
||||||
break;
|
|
||||||
case PROP_SLOT_BASE:
|
case PROP_SLOT_BASE:
|
||||||
virtual_native->slot_base = g_value_get_uint (value);
|
virtual_native->slot_base = g_value_get_uint (value);
|
||||||
break;
|
break;
|
||||||
@ -1002,7 +1046,9 @@ create_device_in_impl (GTask *task)
|
|||||||
ImplState *impl_state = g_task_get_task_data (task);
|
ImplState *impl_state = g_task_get_task_data (task);
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
g_task_get_source_object (task);
|
g_task_get_source_object (task);
|
||||||
MetaSeatImpl *seat_impl = virtual_native->seat->impl;
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
|
MetaSeatImpl *seat_impl = seat_native->impl;
|
||||||
ClutterVirtualInputDevice *virtual_device =
|
ClutterVirtualInputDevice *virtual_device =
|
||||||
CLUTTER_VIRTUAL_INPUT_DEVICE (virtual_native);
|
CLUTTER_VIRTUAL_INPUT_DEVICE (virtual_native);
|
||||||
ClutterInputDeviceType device_type =
|
ClutterInputDeviceType device_type =
|
||||||
@ -1026,6 +1072,8 @@ meta_virtual_input_device_native_constructed (GObject *object)
|
|||||||
CLUTTER_VIRTUAL_INPUT_DEVICE (object);
|
CLUTTER_VIRTUAL_INPUT_DEVICE (object);
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (object);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (object);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
ClutterInputDeviceType device_type;
|
ClutterInputDeviceType device_type;
|
||||||
g_autoptr (GTask) task = NULL;
|
g_autoptr (GTask) task = NULL;
|
||||||
|
|
||||||
@ -1039,7 +1087,7 @@ meta_virtual_input_device_native_constructed (GObject *object)
|
|||||||
|
|
||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, virtual_native->impl_state, NULL);
|
g_task_set_task_data (task, virtual_native->impl_state, NULL);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) create_device_in_impl);
|
(GSourceFunc) create_device_in_impl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1057,6 +1105,8 @@ meta_virtual_input_device_native_dispose (GObject *object)
|
|||||||
CLUTTER_VIRTUAL_INPUT_DEVICE (object);
|
CLUTTER_VIRTUAL_INPUT_DEVICE (object);
|
||||||
MetaVirtualInputDeviceNative *virtual_native =
|
MetaVirtualInputDeviceNative *virtual_native =
|
||||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (object);
|
META_VIRTUAL_INPUT_DEVICE_NATIVE (object);
|
||||||
|
MetaSeatNative *seat_native =
|
||||||
|
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||||
GObjectClass *object_class =
|
GObjectClass *object_class =
|
||||||
G_OBJECT_CLASS (meta_virtual_input_device_native_parent_class);
|
G_OBJECT_CLASS (meta_virtual_input_device_native_parent_class);
|
||||||
|
|
||||||
@ -1067,14 +1117,14 @@ meta_virtual_input_device_native_dispose (GObject *object)
|
|||||||
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
task = g_task_new (virtual_device, NULL, NULL, NULL);
|
||||||
g_task_set_task_data (task, virtual_native->impl_state,
|
g_task_set_task_data (task, virtual_native->impl_state,
|
||||||
(GDestroyNotify) impl_state_free);
|
(GDestroyNotify) impl_state_free);
|
||||||
meta_seat_impl_run_input_task (virtual_native->seat->impl, task,
|
meta_seat_impl_run_input_task (seat_native->impl, task,
|
||||||
(GSourceFunc) release_device_in_impl);
|
(GSourceFunc) release_device_in_impl);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
|
|
||||||
virtual_native->impl_state = NULL;
|
virtual_native->impl_state = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_seat_native_release_touch_slots (virtual_native->seat,
|
meta_seat_native_release_touch_slots (seat_native,
|
||||||
virtual_native->slot_base);
|
virtual_native->slot_base);
|
||||||
|
|
||||||
object_class->dispose (object);
|
object_class->dispose (object);
|
||||||
@ -1108,10 +1158,6 @@ meta_virtual_input_device_native_class_init (MetaVirtualInputDeviceNativeClass *
|
|||||||
virtual_input_device_class->notify_touch_motion = meta_virtual_input_device_native_notify_touch_motion;
|
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;
|
virtual_input_device_class->notify_touch_up = meta_virtual_input_device_native_notify_touch_up;
|
||||||
|
|
||||||
obj_props[PROP_SEAT] = g_param_spec_pointer ("seat", NULL, NULL,
|
|
||||||
G_PARAM_READWRITE |
|
|
||||||
G_PARAM_STATIC_STRINGS |
|
|
||||||
G_PARAM_CONSTRUCT_ONLY);
|
|
||||||
obj_props[PROP_SLOT_BASE] = g_param_spec_uint ("slot-base", NULL, NULL,
|
obj_props[PROP_SLOT_BASE] = g_param_spec_uint ("slot-base", NULL, NULL,
|
||||||
0, G_MAXUINT, 0,
|
0, G_MAXUINT, 0,
|
||||||
G_PARAM_READWRITE |
|
G_PARAM_READWRITE |
|
||||||
|
Loading…
x
Reference in New Issue
Block a user