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_SEAT,
|
||||
PROP_SLOT_BASE,
|
||||
|
||||
PROP_LAST
|
||||
@ -54,7 +53,6 @@ struct _MetaVirtualInputDeviceNative
|
||||
{
|
||||
ClutterVirtualInputDevice parent;
|
||||
|
||||
MetaSeatNative *seat;
|
||||
guint slot_base;
|
||||
ImplState *impl_state;
|
||||
};
|
||||
@ -204,12 +202,22 @@ release_device_in_impl (GTask *task)
|
||||
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
|
||||
notify_relative_motion_in_impl (GTask *task)
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
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);
|
||||
|
||||
if (event->time_us == CLUTTER_CURRENT_TIME)
|
||||
@ -236,6 +244,8 @@ meta_virtual_input_device_native_notify_relative_motion (ClutterVirtualInputDevi
|
||||
MetaVirtualEventMotion *event;
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GTask *task;
|
||||
|
||||
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);
|
||||
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);
|
||||
g_object_unref (task);
|
||||
}
|
||||
@ -257,7 +267,9 @@ notify_absolute_motion_in_impl (GTask *task)
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
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);
|
||||
|
||||
if (event->time_us == CLUTTER_CURRENT_TIME)
|
||||
@ -282,6 +294,8 @@ meta_virtual_input_device_native_notify_absolute_motion (ClutterVirtualInputDevi
|
||||
MetaVirtualEventMotion *event;
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GTask *task;
|
||||
|
||||
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);
|
||||
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);
|
||||
g_object_unref (task);
|
||||
}
|
||||
@ -303,7 +317,9 @@ notify_button_in_impl (GTask *task)
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
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);
|
||||
int button_count;
|
||||
int evdev_button;
|
||||
@ -356,6 +372,8 @@ meta_virtual_input_device_native_notify_button (ClutterVirtualInputDevice *virtu
|
||||
MetaVirtualEventButton *event;
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GTask *task;
|
||||
|
||||
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);
|
||||
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);
|
||||
g_object_unref (task);
|
||||
}
|
||||
@ -377,7 +395,9 @@ notify_key_in_impl (GTask *task)
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
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);
|
||||
int key_count;
|
||||
|
||||
@ -426,6 +446,8 @@ meta_virtual_input_device_native_notify_key (ClutterVirtualInputDevice *virtual_
|
||||
MetaVirtualEventKey *event;
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GTask *task;
|
||||
|
||||
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);
|
||||
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);
|
||||
g_object_unref (task);
|
||||
}
|
||||
@ -450,6 +472,8 @@ pick_keycode_for_keyval_in_current_group_in_impl (ClutterVirtualInputDevice *vir
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
ClutterSeat *seat;
|
||||
ClutterKeymap *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);
|
||||
keymap = clutter_seat_get_keymap (seat);
|
||||
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);
|
||||
min_keycode = xkb_keymap_min_keycode (xkb_keymap);
|
||||
@ -498,6 +522,8 @@ apply_level_modifiers_in_impl (ClutterVirtualInputDevice *virtual_device,
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
guint keysym, keycode, evcode;
|
||||
|
||||
if (level == 0)
|
||||
@ -528,7 +554,7 @@ apply_level_modifiers_in_impl (ClutterVirtualInputDevice *virtual_device,
|
||||
key_state == CLUTTER_KEY_STATE_PRESSED ? "press" : "release",
|
||||
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,
|
||||
time_us,
|
||||
evcode,
|
||||
@ -543,7 +569,9 @@ notify_keyval_in_impl (GTask *task)
|
||||
g_task_get_source_object (task);
|
||||
ClutterVirtualInputDevice *virtual_device =
|
||||
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);
|
||||
int key_count;
|
||||
guint keycode = 0, level = 0, evcode = 0;
|
||||
@ -616,6 +644,8 @@ meta_virtual_input_device_native_notify_keyval (ClutterVirtualInputDevice *virtu
|
||||
MetaVirtualEventKey *event;
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GTask *task;
|
||||
|
||||
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);
|
||||
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);
|
||||
g_object_unref (task);
|
||||
}
|
||||
@ -666,7 +696,9 @@ notify_discrete_scroll_in_impl (GTask *task)
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
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);
|
||||
double discrete_dx = 0.0, discrete_dy = 0.0;
|
||||
|
||||
@ -695,6 +727,8 @@ meta_virtual_input_device_native_notify_discrete_scroll (ClutterVirtualInputDevi
|
||||
MetaVirtualEventScroll *event;
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GTask *task;
|
||||
|
||||
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);
|
||||
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);
|
||||
g_object_unref (task);
|
||||
}
|
||||
@ -716,7 +750,9 @@ notify_scroll_continuous_in_impl (GTask *task)
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
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);
|
||||
|
||||
if (event->time_us == CLUTTER_CURRENT_TIME)
|
||||
@ -756,6 +792,8 @@ meta_virtual_input_device_native_notify_scroll_continuous (ClutterVirtualInputDe
|
||||
MetaVirtualEventScroll *event;
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GTask *task;
|
||||
|
||||
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);
|
||||
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);
|
||||
g_object_unref (task);
|
||||
}
|
||||
@ -779,7 +817,9 @@ notify_touch_down_in_impl (GTask *task)
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
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);
|
||||
MetaTouchState *touch_state;
|
||||
|
||||
@ -817,6 +857,8 @@ meta_virtual_input_device_native_notify_touch_down (ClutterVirtualInputDevice *v
|
||||
MetaVirtualEventTouch *event;
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GTask *task;
|
||||
|
||||
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);
|
||||
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);
|
||||
g_object_unref (task);
|
||||
}
|
||||
@ -839,7 +881,9 @@ notify_touch_motion_in_impl (GTask *task)
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
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);
|
||||
MetaTouchState *touch_state;
|
||||
|
||||
@ -877,6 +921,8 @@ meta_virtual_input_device_native_notify_touch_motion (ClutterVirtualInputDevice
|
||||
MetaVirtualEventTouch *event;
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GTask *task;
|
||||
|
||||
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);
|
||||
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);
|
||||
g_object_unref (task);
|
||||
}
|
||||
@ -899,7 +945,9 @@ notify_touch_up_in_impl (GTask *task)
|
||||
{
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
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);
|
||||
MetaTouchState *touch_state;
|
||||
|
||||
@ -919,7 +967,7 @@ notify_touch_up_in_impl (GTask *task)
|
||||
touch_state->coords.x,
|
||||
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);
|
||||
|
||||
out:
|
||||
@ -935,6 +983,8 @@ meta_virtual_input_device_native_notify_touch_up (ClutterVirtualInputDevice *vir
|
||||
MetaVirtualEventTouch *event;
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GTask *task;
|
||||
|
||||
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);
|
||||
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);
|
||||
g_object_unref (task);
|
||||
}
|
||||
@ -961,9 +1011,6 @@ meta_virtual_input_device_native_get_property (GObject *object,
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_SEAT:
|
||||
g_value_set_pointer (value, virtual_native->seat);
|
||||
break;
|
||||
case PROP_SLOT_BASE:
|
||||
g_value_set_uint (value, virtual_native->slot_base);
|
||||
break;
|
||||
@ -984,9 +1031,6 @@ meta_virtual_input_device_native_set_property (GObject *object,
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_SEAT:
|
||||
virtual_native->seat = g_value_get_pointer (value);
|
||||
break;
|
||||
case PROP_SLOT_BASE:
|
||||
virtual_native->slot_base = g_value_get_uint (value);
|
||||
break;
|
||||
@ -1002,7 +1046,9 @@ create_device_in_impl (GTask *task)
|
||||
ImplState *impl_state = g_task_get_task_data (task);
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
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 =
|
||||
CLUTTER_VIRTUAL_INPUT_DEVICE (virtual_native);
|
||||
ClutterInputDeviceType device_type =
|
||||
@ -1026,6 +1072,8 @@ meta_virtual_input_device_native_constructed (GObject *object)
|
||||
CLUTTER_VIRTUAL_INPUT_DEVICE (object);
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (object);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
ClutterInputDeviceType device_type;
|
||||
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);
|
||||
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);
|
||||
}
|
||||
|
||||
@ -1057,6 +1105,8 @@ meta_virtual_input_device_native_dispose (GObject *object)
|
||||
CLUTTER_VIRTUAL_INPUT_DEVICE (object);
|
||||
MetaVirtualInputDeviceNative *virtual_native =
|
||||
META_VIRTUAL_INPUT_DEVICE_NATIVE (object);
|
||||
MetaSeatNative *seat_native =
|
||||
meta_virtual_input_device_native_get_seat_native (virtual_native);
|
||||
GObjectClass *object_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);
|
||||
g_task_set_task_data (task, virtual_native->impl_state,
|
||||
(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);
|
||||
g_object_unref (task);
|
||||
|
||||
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);
|
||||
|
||||
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_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,
|
||||
0, G_MAXUINT, 0,
|
||||
G_PARAM_READWRITE |
|
||||
|
Loading…
x
Reference in New Issue
Block a user